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

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

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

관련 정보