record some linux cmds(8)

  1. common
    comm 命令将逐行比较已经排序的两个文件。显示结果包括 3 列:第 1 列为只在第一个文件中找到的行,第 2 列为只在第二个文件中找到的行,第 3 列为两个文件的共有行。
    record some linux cmds(8)
shiyanlou:~/ $ echo a, b, c > file1.txt                              [16:09:18]
shiyanlou:~/ $ echo d, e, c > file2.txt                              [16:15:11]
shiyanlou:~/ $ cat file1.txt                                         [16:15:21]
a, b, c
shiyanlou:~/ $ cat file2.txt                                         [16:15:28]
d, e, c
shiyanlou:~/ $ comm file1.txt file2.txt                              [16:15:33]
a, b, c
	d, e, c
shiyanlou:~/ $ comm file1.txt file2.txt -1 -2                        [16:15:41]
shiyanlou:~/ $                                                       [16:16:03]
  1. diff
    diff 命令被用来监测文件之间的差异。
    record some linux cmds(8)
    表示file1的第1行和file2的第1行是不同的
shiyanlou:~/ $ diff file1.txt file2.txt                              [16:16:03]
1c1
< a, b, c
---
> d, e, c
shiyanlou:~/ $    

从上面例一的显示结果可以知道,file1.txt 和 file2.txt 两个文件的差异不易直观看出,可以使用上下文模式显示,可以使用如下命令:diff -c file1.txt file2.txt
record some linux cmds(8)

这个输出结果以两个文件名和它们的时间戳开头。第一个文件用星号做标记,第二个文件用短横线做标记。纵观列表的其它部分,这些标记将象征它们各自代表的文件。

*** 1,4 *** 表示第一个文件中第一行到第四行的文本行。

— 1,4 — 表示第二个文件中第一行到第四行的文本行。

三种特殊字符:

+ 添加行,这一行将会出现在第二个文件内,而不是第一个文件内

- 删除行,这一行将会出现在第一个文件中,而不是第二个文件内

! 更改行,将会显示某个文本行的两个版本,每个版本会出现在更改组的各自部分

查看 file1.txt 和 file2.txt 两个文件的差异,使用统一模式显示,可以使用如下命令:diff -u file1.txt file2.txt
record some linux cmds(8)

上下文模式和统一模式之间最显著的差异就是重复上下文的消除,这就使得统一模式的输出结果要比上下文模式的输出结果简短。

@@ -1,4 +1,4 @@ 表示在在更改组中描述的第一个文件中的文本行和第二个文件中的文本行。

特殊字符:

+ 添加这一行到第一个文件中
- 在第一个文件中删除这一行
3. patch

生成 file1.txt 和 file2.txt 的 diff 文件,然后应用 patch 命令更新 file1.txt 文件,可以使用如下命令:

diff  -Naur file1.txt  file2.txt > patchdiff.txt
patch < patchdiff.txt

这样file1就被修改得跟file2一样了