比较两个文件

比较两个文件

我有两个文件

文件1:

45 789 
46 4546
78 4564
71 546

文件2:

41 456 
46 456
40 465
45 456

我想比较这些文件并获得输出:如果第一个文件第一列中的数字位于第二个文件的第一列中,则打印第二个文件中包含该数字的行。

期望的输出:

46 456
45 456

会是 grep 的东西吗?非常感谢

答案1

读取第一个文件的列以填充“已看到”值的数组。然后在读取第二个文件时,如果第一个值已被“看到”,则打印记录:

$ awk 'NR == FNR { data[$1] = 1 } NR != FNR && data[$1] { print }' file1 file2
46 456
45 456

我们还可以使用和,而不是使用FR == NR和测试。FR != NRFILENAME == "file1"FILENAME == "file2"

答案2

假设您的 shell 是 bash/ksh/zsh:

join -o 0,2.2 <(sort file1) <(sort file2)

答案3

命令

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

输出

46 456
45 456

相关内容