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$ 

관련 정보