如果比较两个简单的文件的不同之处,肉眼也可以;但如果比较两个很大的文件,人工比较不仅费时,还很容易出错。Linux为我们提供了两个比较文件内容的工具:comm和diff(分别是common和different的缩写),可以快速比较两个文件的异同,尤其是两个大文件只有细微的区别时更有用。在这一节我们先来学习comm,下一节再来学习diff。
比较两个排序好的文件
comm [option] file1 file2
-1 不显示文件1特有的行 -2 不显示文件2特有的行 -3 不显示2个文件共有的行
首先我们建两个文件,第一个文件的内容是1、2、3、4,每行一个数字,第二个文件是1、2、2、4:
[peter@ibi98 ~]$ cat >file1 1 2 3 4 [peter@ibi98 ~]$ cat >file2 1 2 2 4 [peter@ibi98 ~]$ cat file1 1 2 3 4 [peter@ibi98 ~]$ cat file2 1 2 2 4
用comm比较两个文件:
[peter@ibi98 ~]$ comm file1 file2
1
2
2
3
4
结果有3列,第1列是文件1特有的行,第2列是文件2特有的行,第3列是两个文件共有的行。
下面我们看一下3个选项的效果:
[peter@ibi98 ~]$ comm -1 file1 file2 1 2 2 4 [peter@ibi98 ~]$ comm -2 file1 file2 1 2 3 4 [peter@ibi98 ~]$ comm -3 file1 file2 2 3
-1选项不显示文件1特有的行(上面结果的第1列);-2选项不显示文件2特有的行(上面结果的第2列);-3选项不显示两个文件共有的行(上面结果的第3列)。您也可以把这些选项联合用:
[peter@ibi98 ~]$ comm -12 file1 file2 1 2 4 [peter@ibi98 ~]$ comm -13 file1 file2 2 [peter@ibi98 ~]$ comm -23 file1 file2 3
-12选项只显示两个文件共有的行(不显示文件1特有的行和文件2特有的行);-13只显示文件2特有的行;-23只显示文件1特有的行。
设想一下,如果有两个文件各有10000行,其中只有一行不一样,comm一下,马上就可以知道了!