我有两个文件 A 和 B。
我想找出文件 B 中哪些行在文件 A 中不存在。
我该怎么做?这些行可以位于文件 A 中的任何位置。
答案1
简单地
grep -vxf A B
如果您还想要不匹配行的行号:
grep -nvxf A B
如果 B 有多个不匹配的相同行,并且你只想打印出一次相同的行,那么
grep -vxf A B | sort | uniq
答案2
你可以使用 sdiff 命令。用法:sdiff file1.txt file2.txt
您可以在任何地方使用这些线条。
哪些是不常见的线条,它们将用>
符号表示。请看下图。示例:
答案3
您说线可以位于任何位置,但如果位置对您来说并不重要(只是想知道差异),请使用comm
:
Compare sorted files FILE1 and FILE2 line by line. With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files.
它需要对文件进行排序,幸运的是sort
可以帮助解决这个问题。您可以sort A > A.sorted
对其进行排序,对 B 执行类似操作,然后:
comm -1 -3 A.sorted B.sorted
这将打印“FILE2独有的行”,在本例中是B.sorted。
您也可以在线进行排序,命令输入起来有点麻烦,但可以节省几个步骤:
comm -1 -3 <(sort A) <(sort B)