大きなファイルAを読み、2番目のファイルから関連文字列を検索して出力を作成します。

大きなファイルAを読み、2番目のファイルから関連文字列を検索して出力を作成します。

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です。ファイルを直接読み取ることができます。grepgrep

おすすめ記事