比较两个文件并显示差异

时间:2018-05-21 13:12:18

标签: bash awk

我需要比较两个文件,每个文件有一列,找到它们之间的差异,显示在第一个文件中找不到的数字0xxx.dat。

文件1

0458.dat
0460.dat
0472.dat
0476.dat
0489.dat
0498.dat
0502.dat
0504.dat
0508.dat
0509.dat

file2的

0457.dat
0458.dat
0459.dat
0460.dat
0461.dat
0462.dat
0463.dat
0464.dat
0465.dat
0466.dat

预期输出

0457.dat
0459.dat
0461.dat
0462.dat
0463.dat
0464.dat
0465.dat
0466.dat

2 个答案:

答案 0 :(得分:2)

使用grep:

grep file2 -f file1 -v
  • -f从文件中读取匹配模式。
  • -v发现不匹配而非匹配。

这给出了:

0457.dat
0459.dat
0461.dat
0462.dat
0463.dat
0464.dat
0465.dat
0466.dat

答案 1 :(得分:1)

关注awk可能会对您有所帮助。

awk 'FNR==NR{a[$0];next} !($0 in a){print $0 " is not found in File."}' file1 file2

如果您不需要像上面代码那样的文字is not found in File.,那么以下内容可能会对您有所帮助。以下将NOT查找ID打印到名为Files_not_found_in_File1的输出文件。

awk 'FNR==NR{a[$0];next} !($0 in a){print $0 > "Files_not_found_in_File1"}' file1 file2