awk検索文字列と1行の合計

awk検索文字列と1行の合計

以下に示す例のログがあります。SUCCESSログファイルで文字列を探して合計を計算しています。

$ cat ansible.log
lnx-host01.tin.com | SUCCESS => {"changed": false, "ping": "pong"}
lnx-host02.tin.com | SUCCESS => {"changed": false, "ping": "pong"}

これは単純で簡単なアプローチですが、コマンドawkに渡されずに行自体で実行できるかどうか疑問に思いました。wc

$ awk '/SUCCESS/{print $0}'  ansible.log | wc -l
66

OR

$ awk '/SUCCESS/' ansible.log| wc -l
66

答え1

ここにいる:

awk 'BEGIN { count=0 } /SUCCESS/ { count++ } END { print count }' ansible.log

もちろんこれも動作します:

grep -c SUCCESS ansible.log

関連情報