Linux diff命令

时间:2019-11-20 08:52:49  来源:igfitidea点击:

使用Linux diff命令时,如何显示文件共有的行?

解决方案

要显示两个文件共有的行,可以使用comm命令替代。
它将逐行比较两个排序的文件。如果没有选项,则产生三列输出。第一列包含FILE1独有的行,第二列包含FILE2独有的行,第三列包含两个文件共同的行。

显示文件1和文件2共有的行

执行命令,如下所示:

$ comm /path/to/file1/ /path/to/file2
$ comm -1 /path/to/file1/ /path/to/file2
$ comm -2 /path/to/file1/ /path/to/file2
$ comm -3 /path/to/file1/ /path/to/file2

其中

  • -1:不显示FILE1特有的行
  • -2:不显示FILE2独有的行
  • -3:不显示在两个文件中都有的行

或者我们使用perl脚本实现:

$ perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/'  file1 file2

file1

linux
hello
theitroad
world

file2

hello
java
world
theitroad
on it road
[Hyman@theitroadcentos7 tmp]# comm -1 file1 file2
hello
java
comm: file 1 is not in sorted order
        world
comm: file 2 is not in sorted order
theitroad
on it road
[Hyman@theitroadcentos7 tmp]# comm -2 file1 file2
linux
comm: file 1 is not in sorted order
hello
theitroad
        world
comm: file 2 is not in sorted order
[Hyman@theitroadcentos7 tmp]# comm -3 file1 file2
        hello
        java
linux
comm: file 1 is not in sorted order
hello
theitroad
comm: file 2 is not in sorted order
        theitroad
        on it road
[Hyman@theitroadcentos7 tmp]#