我想找出两个文件中都有的交叉记录。限制是记录可以出现在文件的任何位置。因为我正在使用下面的代码
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
请帮我解决这个问题。
答案 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)