[grep] grep을 사용하여 많은 파일에서 문자열을 모두 계산

로그 파일이 많이 있습니다. 모든 파일에서 문자열이 몇 번이나 발생하는지 찾아야합니다.

grep -c string *

보고

...
file1:1
file2:0
file3:0
...

파이프를 사용하여 하나 이상의 발생이있는 파일 만 얻을 수있었습니다.

grep -c string * | grep -v :0

...
file4:5
file5:1
file6:2
...

총 개수 만 어떻게 구할 수 있습니까? (이 반환 file4:5, file5:1, file6:2되면 8을 다시 얻고 싶습니다.)



답변

cat * | grep -c string


답변

한 줄에 여러 번 발생합니다.

grep -o string * | wc -l


답변

grep -oh string * | wc -w

한 줄에 여러 번 발생


답변

-c를 사용하는 대신 wc -l로 파이프하십시오.

grep string * | wc -l

그러면 각 행이 단일 행에 나열되고 행 수를 계산합니다.

그러나 문자열이 한 줄에 2 번 이상 발생하는 인스턴스는 누락됩니다.


답변

cat * | grep -c string

의 유용한 응용 프로그램 중 하나입니다 cat.


답변

이전의 모든 답변과 다른 점 :

perl -lne '$count++ for m/<pattern>/g;END{print $count}' *


답변

-R재귀 적으로 검색하고 cat 사용을 피하기 위해 추가 -I하고 이진 파일을 무시할 수 있습니다.

grep -RIc string .