Linux操作命令(九)1.comm命令 2.diff命令 3.patch命令
1、comm
用于比较两个有序文件的不同,在使用comm指令之前应先把文件的内容进行排序(sort)
显示结果包括 3 列:第 1 列为只在第一个文件中找到的行,第 2 列为只在第二个文件中找到的行,第 3 列为两个文件的共有行
参数 | 描述 |
---|---|
-1 | 不输出文件 1 特有的行 |
-2 | 不输出文件 2 特有的行 |
-3 | 不输出两个文件共有的行 |
比较file1.txt
和file2.txt
两个文件的内容:comm file1.txt file2.txt
比较file1.txt
和file2.txt
两个文件的内容,只显示两个文件共有的内容:comm -12 file1.txt file2.txt
2、diff 命令
可以逐行比较两个文件,并把文件的差异显示到标准输出
参数 | 描述 |
---|---|
-c | 上下文模式,显示全部内文,并标出不同之处 |
-u | 统一模式,以合并的方式来显示文件内容的不同 |
-a | 只会逐行比较文本文件 |
-N | 在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录。若使用 -N 参数,则 diff 会将文件 A 与一个空白的文件比较 |
-r | 递归比较目录下的文件 |
file1.txt
和file2.txt
两个文件的差异:diff file1.txt file2.txt
上面结果显示中的“1d0”表示file1.txt
文件比file2.txt
文件多了第一行,“4c3,4”表示file1.txt
文件的第四行和file2.txt
文件的第三、四行不同
diff 的 normal 显示格式有三种提示:
- a - add
- c - change
- d - delete
从上面例一的显示结果可以知道,file1.txt
和file2.txt
两个文件的差异不易直观看出,这时可以使用上下文模式显示,可以使用如下命令:diff -c file1.txt file2.txt
这个输出结果以两个文件名和它们的时间戳开头。第一个文件用星号做标记,第二个文件用短横线做标记。纵观列表的其它部分,这些标记将象征它们各自代表的文件。
*** 1,4 *** 表示第一个文件中第一行到第四行的文本行。
--- 1,4 --- 表示第二个文件中第一行到第四行的文本行
三种特殊字符:
+
添加行,这一行将会出现在第二个文件内,而不是第一个文件内 -
删除行,这一行将会出现在第一个文件中,而不是第二个文件内 !
更改行,将会显示某个文本行的两个版本,每个版本会出现在更改组的各自部分
这些特殊字符很容易混淆,实际上记住一点就行:所有操作目的是将第一个文件变成第二个文件
查看file1.txt
和file2.txt
两个文件的差异,使用统一模式显示:diff -u file1.txt file2.txt
上下文模式和统一模式之间最显著的差异就是重复上下文的消除,这就使得统一模式的输出结果要比上下文模式的输出结果简短。
**@@ -1,4 +1,4 @@**表示在在更改组中描述的第一个文件中的文本行和第二个文件中的文本行。
特殊字符:
- + 添加这一行到第一个文件中
- - 在第一个文件中删除这一行