如何比较两个文件并创建不在第一个文件中的另一个文件?

如何比较两个文件并创建不在第一个文件中的另一个文件?

file1包含:

100
200
300
400

file2包含:

500
600
700
200
300

预期的输出文件将是:

500
600
700

答案1

如果您不介意输出被排序,您可以使用comm

comm -13 <(sort /tmp/file1) <(sort /tmp/file2)

输出(隐式排序):

500
600
700

答案2

join

join -j 1 -v 2 <(sort file1) <(sort file2)

在哪里:

  • -j定义连接字段
  • -v抑制连接线

或者与awk

awk 'NR==FNR{a[$1]++} !a[$1]' file1 file2
  • 第一个文件被加载到数组中a
  • 然后当处理第二个文件时,如果该值a不存在,则打印该行

相关内容