2つの大きなファイル(160万〜4700万項目)に対してforループを実行しており、各行を把握するのに時間がかかります。ここで他のより速い解決策が利用可能かどうか疑問に思います。デフォルトでは、FILE-Aの各行を読み取り、FILE-B.csvにgrepして結果出力を生成する必要があります。
FILE-A: (1.6 million IDs)
FILE-B.csv: (47 million IDs & Other Attributes)
for UID in $(cat FILE-A); do
cat FILE-B.csv | grep $i >> OUTPUT-FILE.csv
done
ベストアンサー1
grep -F -f FILE-A FILE-B.csv
-f
スキーマをインポートするファイルを指定します。 -F
パターンを改行区切りの固定文字列として指定します。
ソースコードによると、パイピング入力は無駄なリソースの無駄 cat
です。ファイルを直接読み取ることができます。grep
grep