계산할 때와 계산하지 않을 때 grep

계산할 때와 계산하지 않을 때 grep

매뉴얼 페이지에는 다음과 grep같이 나와 있습니다.

-c, --count: 일반 출력을 억제하고 대신 각 입력 파일에 대해 일치하는 줄 수를 인쇄합니다.

주어진:

# grep -R -c sleeping /proc/*/status

개수 대신 목록을 얻습니다(아래).

# grep -R sleeping /proc/*/status | wc -l

뭐가 문제 야 grep -c? 위 명령에서 카운트를 가져오지 않고 )를 사용하지 않고 무엇을 하고 있습니까 wc -l?

답변1

grep -c각 입력 파일에 대해 개별적으로 일치하는 줄 수를 제공합니다(실제로 매뉴얼에서 인용한 내용입니다).

$ grep -c user chmod.1 chown.1 
chmod.1:20
chown.1:5

그래서 chmod.120개의 게임이 있고, chown.15개의 게임이 있습니다.

여기서 파일 이름 목록은 일반 grep처럼 작동합니다. 즉, 입력 파일이 여러 개 있으면 파일 이름이 나열되지만 입력 파일이 하나만 있으면 파일 이름이 나열되지 않습니다. 적어도 GNU grep에서는 -H및 플래그를 사용하여 -h수정할 수 있습니다.

그래서,

$ grep -c user chmod.1
20
$ grep -cH user chmod.1
chmod.1:20

답변2

총 개수의 경우 파일별 개수가 보고되지 않도록 cat그다지 쓸모가 없는 사용법을 사용하십시오.grep

-bash-4.2$ cat /proc/*/status | grep -c sleeping
171
-bash-4.2$ grep sleeping /proc/*/status | wc -l
171
-bash-4.2$ 

관련 정보