2つのファイルを比較し、2つの列に基づいて一致する行を取得します。

2つのファイルを比較し、2つの列に基づいて一致する行を取得します。

次のように、2つのパイプで区切られたファイルがあります。

ファイル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

おすすめ記事