Grep、sed、awkが非常に大きなファイル内のデータを検索するための実行可能なツールであるかどうか疑問に思っていました。
1TBのファイルがあるとしましょう。そのファイル内のテキストを処理したい場合、個々のコマンドgrep、sed、awkを使用したり、それらを混合したりすると、タイムフレームはどのようになりますか。
結果はハードウェアの仕様に基づいて異なるため、特定の回答は明らかに不可能ですが、一般的な見積もりが得られれば役立つでしょう。
一般的に私はgrep
が最も速く、sed
が最も遅いと言います。もちろん、これは正確に何をしているのかに依存します。 awk
はsed
よりもはるかに高速です。
実際の正規表現は必要なく、単純な固定文字列(オプション-F)のみが必要な場合は、grepを高速化できます。
パイプでgrep、sed、awkを一緒に使用する場合は、可能であれば、grepコマンドを最初に配置します。
例えばこれは:
grep -F "foo" file | sed -n 's/foo/bar/p'
通常、これより高速です。
sed -n 's/foo/bar/p' file
最初の行のgrep
は不要のようですが。
ところで、これらのコマンドはLC_ALL=C
単純なASCIIテキストファイルを扱っている場合。
私の経験はすべてgnuコマンドに基づいていることに注意してください。また、さまざまな実装を試し、速度を比較することもできます。