2つのファイルを比較し、一致する値を新しいファイルとして印刷します。

2つのファイルを比較し、一致する値を新しいファイルとして印刷します。

1,200万行のファイルがあり、各行は8つの部分に分かれており、すべて「;」で区切られています。ファイル1の例: AAA;BBB;CCC;DDD;EEE;FFF;GGGXX;HHH

各行には一意のIDがあり、コストは$ 7です。次のように、約20,000の一意のIDを一覧表示する別のファイル(File2)があります。 GGGXX; GGGXY; GGGXZ;

誰でも自分だけのルートがあります。

File1の完全なデータ行を含むFile2のIDに基づいて新しいファイルを生成するには、結果が必要です。

以下のコードを使用すると、File2に複数の項目がある場合は機能しないようです。

awk -F ";" 'NR==FNR{a[$1]} ($7 in a){print}' File2.txt File1.txt

File2にIDがリストされる方法に問題があるのでしょうか、それとも私が間違っているのでしょうか?

答え1

希望の出力を取得するには、次のコマンドを使用します。

awk  -F "," 'NR==FNR {a[$7];next}($1 in a){print $1}' file1 file2 > newfile

関連情報