找到两个文件中的记录

时间:2013-02-08 11:45:29

标签: shell

我想找出两个文件中都有的交叉记录。限制是记录可以出现在文件的任何位置。因为我正在使用下面的代码

awk 'FNR==NR{a[$0];next}($0 in a)' 1.txt 2.txt

但是工作不正常。

假设我有两个文件1.txt和2.txt。

的1.txt

A
B
D
E

2.txt

DD
T
B
A
Z

OUPUT应该是这样的

B
A

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

试试这个:

grep -w -f 1.txt 2.txt

-w陈述单词

-f表示文件

答案 1 :(得分:0)

另一种选择:

使用comm命令,这就是这个命令的目的:

comm <(sort 1.txt)  <( sort 2.txt) -12

来自man comm

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.

-1     suppress column 1 (lines unique to FILE1)
-2     suppress column 2 (lines unique to FILE2)
-3     suppress column 3 (lines that appear in both files)

但是,comm需要排序文件。因此,流程替换为<(sort 1.txt)&amp; <(sort 2.txt)