次の質問に対する回答を見てみましたが、以下のような予想結果は得られませんでした。
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
これが百万のレコードで動作するかどうかはわかりません。