패턴 발생 횟수를 반복적으로 계산할 때 파일 이름 제거

패턴 발생 횟수를 반복적으로 계산할 때 파일 이름 제거

grep 명령을 실행할 때:

grep -rc 'PATTERN' .

패턴이 발생하는 줄 수를 인쇄하지만 다음과 같습니다.

./hotel_232424.dat:234

등등...

./hotel_232424.dat:부품을 제거하고 번호만 인쇄하려면 어떻게 해야 합니까 ?

답변1

의 GNU 구현에는 이에 대한 / 옵션이 grep있습니다 .-h--no-filename

$ grep -rc PATTERN .
./b:1
./a:0
./1/2/c:2
$ grep -rhc PATTERN .
1
0
2

이식 가능/표준에 해당하는 것은 다음과 같습니다.

$ find . -type f -exec grep -c PATTERN {} \;
0
2
1

grep하지만 이는 파일당 하나의 호출을 실행한다는 의미입니다 .

대신 총 발생 횟수(여기서는 1+2 = 3)를 원하면 다음과 같이 할 수 있습니다.

$ find . -type f -exec cat {} + | grep -c PATTERN
3

(일부 파일의 마지막 줄 뒤에 데이터가 있는 경우(즉, 텍스트가 아닌 파일) 결과가 엉망이 될 수 있습니다.)

또는 귀하와 같은 grep지원을 받아 -r:

$ grep -r PATTERN . | wc -l
3

관련 정보