メモリの枯渇の問題を避けるためにファイルからgrepを実行する方法は?

メモリの枯渇の問題を避けるためにファイルからgrepを実行する方法は?

これには2つの大きなテキストファイルがあり、30mbそれぞれ1つずつ必要ですgrepgrep -f "file01.txt" "file02.txt" > file03.txt

これを行うと、「メモリ不足」エラーが返されます。

アルファベット順に関係なく、これらのファイルをどのように比較できますか?

ベストアンサー1

file01.txt実際の内容を含まない限り一般的な表現、努力する:

grep -Ff "file01.txt" "file02.txt" > file03.txt

-F正規表現ではなく固定文字列としてgrep処理するように指示します。file01.txtこれにより、速度が大幅に向上し、メモリ要件が大幅に削減されます。

一般的な表現

あるいは、file01.txt正規表現を含める場合は、それらを複数の部分に分割してgrep各部分に個別に適用できます。

split -dn 10 "file01.txt" ./tmp-file01.
for f in ./tmp-file01.*; do grep -f "$f" "file02.txt"; done >file03.txt

上記の内容はfile01.txt10箇所に分かれています。使用可能なメモリによっては、より多くのメモリが必要になる場合があります。

file01.txt が次の場合いいえ正規表現を作成し、-F2行目に次を使用します。

for f in ./tmp-file01.*; do grep -Ff "$f" "file02.txt"; done >file03.txt

おすすめ記事