grepとawkの使用

grepとawkの使用

特定のパターンをキャプチャしてawk使用grepできます。なぜ私たちは他のものを使うべきですか?どちらが速く、その理由は何ですか?

ログファイルがあり、特定のパターンを取得するには、次のいずれかを実行できます。

awk '/pattern/' /var/log/messages

または

grep 'pattern' /var/log/messages

ベンチマークをしたことがないのでよくわかりません。誰かがこれについて詳しく説明してもらえますか?両方のツールの内部の仕組みを知ることをお勧めします。

ベストアンサー1

grepが速くなる可能性が高いです。

# time awk '/USAGE/' imapd.log.1 | wc -l
73832

real    0m2.756s
user    0m2.740s
sys     0m0.020s

# time grep 'USAGE' imapd.log.1 | wc -l
73832

real    0m0.110s
user    0m0.100s
sys     0m0.030s

awkは解釈されたプログラミング言語ですが、grepはファイル内のパターンを見つけるための追加の最適化を含むコンパイルされたCコードプログラムです。

(注 - キャッシュによって結果が歪むのを防ぐために、2つのコマンドを2回実行しました。)

詳細は解釈言語ウィキペディアで。

Stephaneがコメントで正確に指摘したように、使用するgrepとawkの実装、オペレーティングシステム、および扱う文字セットによってマイルが変わる可能性があります。

おすすめ記事