我想找出两个文件中的相交记录。限制是记录可以出现在文件中的任何位置。为此,我正在使用下面的代码
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
输出应该是这样的
B
A
请帮助我。
我想找出两个文件中的相交记录。限制是记录可以出现在文件中的任何位置。为此,我正在使用下面的代码
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
输出应该是这样的
B
A
请帮助我。
试试这个:
grep -w -f 1.txt 2.txt
-w 状态词
-f 文件状态
另外的选择:
使用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)
&<(sort 2.txt)