一致する行数だけでなく、grepで一致した総数をカウントする


29

grepは、一致する合計数をカウントする方法を提供しますか?-cオプションは、正規表現に一致した行数のみを返しますが、この場合、1行に複数の一致があります。

回答:


29

これを試して:

grep -o -E "your expression" file |wc -l

-Eは単なる例で、-P、-Fなどです。ポイントは-oです。

テスト:

kent$  echo "abc xxx yyy"|grep -cP "[a-z]{3}"      
1

kent$  echo "abc xxx yyy"|grep -oP "[a-z]{3}"|wc -l
3

8

行の一致したサブセクションのみが印刷されることを示す-oフラグがあります。

wc -lと組み合わせて使用​​します。

grep -o "part of line" | wc -l

man grepでも説明しています。


1

他の答えの代替として、grepのみを使用します。

grep -o "seach pattern" somefile.txt | grep -c ""

最初のgrepの-oは、一致するものをすべて出力します-行全体ではありません(もちろん、行全体が一致しない限り)。次に、2番目のgrepの-cが 'emをカウントします。

入力する文字はもう少し(4や5など)ありますが、覚えやすいと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.