grep/sed/awkは非常に大きなファイルでどのように機能しますか? [閉鎖]

grep/sed/awkは非常に大きなファイルでどのように機能しますか? [閉鎖]

私は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コマンドに基づいていることに注意してください。さまざまな実装を試して速度を比較することもできます。

関連情報