grep、sed、awk が非常に大きなファイル内のデータを検索するための実行可能なツールであるかどうか疑問に思っていました。
1TB のファイルがあるとします。そのファイル内のテキストを処理したい場合、grep、sed、awk の各コマンドを個別に使用した場合と、これらを組み合わせて使用した場合の時間枠はどのくらいになるでしょうか。
当然、結果はハードウェアの仕様によって異なるため、具体的な回答は不可能ですが、大まかな見積もりが得られれば助かります。
答え1
grep一般的に、 が最も速く、が最も遅いと言えますsed。もちろん、これは具体的に何をするかによって異なります。awkよりもはるかに速いと思いますsed。
実際の正規表現は必要なく、単純な固定文字列のみが必要な場合は、grep を高速化できます (オプション -F)。
パイプ内で 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 コマンドに基づいています。異なる実装を試して速度を比較することもできます。


