如何显示共同的线条(反向差异)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我有一系列的文本文件,我想知道它们之间不同的线条,而不是它们之间的线条。命令行unix或windows很好。

FOO:

linux-vdso.so.1 =>  (0x00007fffccffe000)
libvlc.so.2 => /usr/lib/libvlc.so.2 (0x00007f0dc4b0b000)
libvlccore.so.0 => /usr/lib/libvlccore.so.0 (0x00007f0dc483f000)
libc.so.6 => /lib/libc.so.6 (0x00007f0dc44cd000)

libkdeui.so.5 => /usr/lib/libkdeui.so.5 (0x00007f716ae22000)
libkio.so.5 => /usr/lib/libkio.so.5 (0x00007f716a96d000)
linux-vdso.so.1 =>  (0x00007fffccffe000)

因此,如果这两个文件位于所需实用程序的输出之上,那么它就类似于file1:line_number, file2:line_number == matching text (只是一个建议,我真的不在意语法):

foo:1, bar:3 == linux-vdso.so.1 =>  (0x00007fffccffe000)
提问于
用户回答回答于

在* nix上,你可以使用comm。问题的答案是:

comm -1 -2 file1.sorted file2.sorted 
# where file1 and file2 are sorted and piped into *.sorted

以下是完整的用法comm

comm [-1] [-2] [-3 ] file1 file2
-1 Suppress the output column of lines unique to file1.
-2 Suppress the output column of lines unique to file2.
-3 Suppress the output column of lines duplicated in file1 and file2. 

另请注意,在使用comm之前对文件进行排序非常重要,正如手册页中所述。

用户回答回答于

你也可以试试perl

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

扫码关注云+社区