31

1行(または常に1行しかないため、すべての行)にある一致の数を数えたいと思います。

次のように、1行に1つの一致だけではなく、カウントしたい

echo "123 123 123" | grep -c -E "123" # Result: 1

より良い例:

echo "1 1 2 2 2 5" | grep -c -E '([^ ])( \1){1}' # Result: 1, expected: 2 or 3
4

5 に答える 5

53

grep -o次に、パイプスルーを使用できますwc -l

$ echo "123 123 123" | grep -o 123 | wc -l
3
于 2011-05-30T22:49:39.847 に答える
1

最初にスペースを改行に変換する必要があるかもしれません:

$ echo "1 1 2 2 2 5" | tr ' ' $'\n' | grep -c 2
3
于 2011-05-31T12:53:49.717 に答える
1

たぶん以下:

echo "123 123 123" | sed "s/123 /123\n/g" | wc -l

(醜いかもしれませんが、私のbash fuはそれほど素晴らしいものではありません)

于 2011-05-30T22:46:47.443 に答える