比较两个文件并根据两列获取匹配的行

比较两个文件并根据两列获取匹配的行

我有两个管道分隔的文件,如下所示

文件1.txt

A1234|JESSIE|OPTED
A1224|JOHN|OPTED
L1212|RAMSAY|OPTED
L1832|TIZEN|TESTED

文件2.txt

A1234|B1465
G1211|L1211
G1241|L1212
G1271|L1232

所需输出

A1234|B1465
G1241|L1212

我试图将 file2.txt 中的第 1 列和第 2 列与 file1.txt 中的第 1 列进行比较,如果 file1.txt 中的第一列与 file2 中的第 1 列或第 2 列匹配,则获取 file2.txt 中的匹配行。 TXT。

我尝试了下面的 awk,但它似乎没有给我正确的结果。

awk -F'|' 'FNR==NR{a[$1]=1; next} a[$1,2]' file1.txt file2.txt > output.txt

答案1

$ awk -F '|' 'NR==FNR{a[$1]; next} ($1 in a) || ($2 in a)' file1.txt file2.txt
A1234|B1465
G1241|L1212

相关内容