bash:比较两个文件的行

时间:2013-01-22 02:19:44

标签: bash

我有两个文本文件,其中包含一个唯一的排序单词列表:

文件1:

a
b
c
d

文件2:

b
c

我需要一个只包含文件1中无关行的新文件,因此结果将是

a
d

3 个答案:

答案 0 :(得分:16)

这是comm的用途:

  

comm - 选择或拒绝两个文件共有的行

你想要

comm -23 "File 1" "File 2"

将仅抑制文件2 和行中的行的输出,只留下文件1中的行。 更多答案here on Greg Wooledge's wiki

答案 1 :(得分:5)

您可以使用grep

grep -f file1.txt -vFx file2.txt

注意标志F, --fixed-stringsx, --line-regexp的使用,强制在考虑整行的情况下进行比较。

答案 2 :(得分:3)

试试这个

$ join file1.txt file2.txt -v 1

$ man join

-a FILENUM
   print unpairable lines coming from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2
-v FILENUM
   like -a FILENUM, but suppress joined output lines