Unixで定義されたパターンのレポートを収集するためにgrepとawkを使用しますか?

Unixで定義されたパターンのレポートを収集するためにgrepとawkを使用しますか?

次のファイルがあります。

abc:: vvnm\/asj\/pqr
 sadnck
 acdsd
abc:: kfjwej\/asj\/pqr
 frtrt
 ewrfe
 adsf
abc:: flkm\/csj\/lqr
abc:: kmflkm\/asj\/pqr
 sdvd
 dfff

こうして出力したいです。 [以降: abc, count セル]

3 kfjwej/asj/pqr
2 vvnm/asj/pqr
2 kmflkm/asj/pqr
0 flkm/csj/lqr

ベストアンサー1

awk解決策:

awk '/^[0-9]+:abc /{
         if (abc) print count abc;
         sub(/^[0-9]+/, "");
         abc = $0; count = 0; next
     }
     abc{ count++ }
     END{ print count abc }' file

出力:

2:abc vvvvv
3:abc kfjwej
2:abc kmflkm

新しいファイル形式を使用する追加(そして最後の)方法awk ソースファイル:

count_abc.awkスクリプト:

#!/bin/awk -f
/^abc::/{ 
    if (abc) print count, abc;
    gsub(/\\/, "", $2);
    abc = $2; count = 0; next 
}
abc { count++ }
END { print count, abc }

使用法:

awk -f count_abc.awk newfile

出力:

2 vvnm/asj/pqr
3 kfjwej/asj/pqr
2 kmflkm/asj/pqr 

おすすめ記事