file2 の列 2 が file1 の列 2 と異なる場合は、file1 の列 1 と 2 つのファイルの列 2 を印刷します。

file2 の列 2 が file1 の列 2 と異なる場合は、file1 の列 1 と 2 つのファイルの列 2 を印刷します。

それぞれ2つの列を持つ2つのソートされていないファイルがあります。列1の値はfile2のすべての行の値と一致しますが、列2の値が異なるfile1のすべての行に対して列1の値とすべての列2の値を印刷したいと思います。

ファイル1の列1のデータがファイル2にない場合は削除できます。出力ファイルでソート順を維持する必要はありません。

file1: 

2222,b2
4444,d4
1111,a1
3333,c3
5555,e5

file2:

2222,8f
5555,e9
4444,7c
3333,c3


OUTPUT file:
2222,b2,8f
4444,d4,7c
5555,e5,e9

ベストアンサー1

2番目のファイルを読み取り、内容を配列(キー=最初のフィールド、値=2番目のフィールド)に保存し、最初のファイルを読み取り、最初のフィールドが共通キーであるかどうか、およびそれらの2つのフィールドが異なるかどうかを確認します。結果が正の場合、キーと両方の値を印刷します。

awk 'BEGIN{FS=OFS=","}NR==FNR{z[$1]=$2;next}
{if (z[$1] && (z[$1]!=$2)){print $0, z[$1]}}' file2 file1

おすすめ記事