私はgrep、sed、awkが非常に大きなファイルからデータを見つけるための実行可能なツールかどうか疑問に思います。
1TBファイルがあるとしましょう。このファイルのテキストを処理したい場合は、別のコマンドであるgrep、sed、awkを使用して混在させると、時間範囲はどうなりますか?
もちろん、ハードウェアの仕様によって結果が異なるため、具体的な答えを出すことはできませんが、おおよその推定をしてくれれば役に立ちそうです。
答え1
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コマンドに基づいていることに注意してください。さまざまな実装を試して速度を比較することもできます。