2つのファイルの最初の列と2番目の列を比較し、一致すると2番目のファイルの行を印刷します。

2つのファイルの最初の列と2番目の列を比較し、一致すると2番目のファイルの行を印刷します。

次の質問に対する回答を見てみましたが、以下のような予想結果は得られませんでした。

2つのファイルの最初の列を比較し、最初の列が一致した場合は、2番目のファイルの行全体を印刷します。

ファイル1

CLASS|124655
CLASS|124656
CLASS|124657
CLASS|124658

ファイル2

CLASS|124655|STEVE|SMITH||
CLASS|124656|ROGERS|KNIGHT||
CLASS|124657|MITCHELL|BRADFORD||
CLASS|124657||||1236536
CLASS|124658|NORMAN|JONES||
CLASS|124658||||1236539
CLASS|124665|JEFF|JONES||
CLASS|124665||||1236556

期待される出力

CLASS|124655|STEVE|SMITH||
CLASS|124656|ROGERS|KNIGHT||
CLASS|124657|MITCHELL|BRADFORD||
CLASS|124657||||1236536
CLASS|124658|NORMAN|JONES||
CLASS|124658||||1236539

grep -f file1 file2 を試しましたが、カーネルで終了して処理に時間がかかりすぎました。ファイル1とファイル2の両方に100万を超えるレコードがあります。

ベストアンサー1

1つのawk解決策は次のとおりです。

$ awk -v FS="|" 'NR==FNR {get[$1"|"$2]++; next} get[$1"|"$2]' f1.txt f2.txt

これが百万のレコードで動作するかどうかはわかりません。

おすすめ記事