2011-12-08 7 views
1

grepを-f FILEオプションとともに使用したかっただけです。これにより、grepはFILEのすべての行をパターンとして検索して検索する必要があります。大きなパターンファイルでgrepを使用する

ラン:

grep -f patternfile searchfile 

私が使用したパターンファイルが400メガバイト大きいです。私が検索したいファイルは7GBです。 3分後、プロセスは70GBのRAMで終了し、反応はありませんでした。

これは正常ですか?私は何か間違っているのですか? grepは使えないのですか?

ありがとうございました。

答えて

1

grepプロセスがファイルの各パスで終了するようにタスクを分割してみることができます。しかし、あなたが探しているファイルの大きさがあまりにも大きければ、これがどれだけ役に立つかはわかりません。

for pattern in `cat patternFile` 
do 
    grep "$pattern" searchFile 
done 
0

これまでに700MBのパターンファイルを使用している人はこれまでに聞いたことがありません。私はあまりにも多くのメモリを食べたことは驚きではありません。

時間がある場合は、ファイルをセクションに分割し、各セクションを1つずつ処理するか、または7GBファイルを1つの正規表現で処理することをおすすめします。 7GBファイル全体をメモリに収めることができ、それがどれくらい時間がかかるか心配していなければ、それは最も信頼できる解決策かもしれません。

4

パターンファイルの行がリテラル文字列の場合、 "-F"オプションを使用すると、はるかに高速になります。

関連する問題