매뉴얼 페이지에는 다음과 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.1
20개의 게임이 있고, chown.1
5개의 게임이 있습니다.
여기서 파일 이름 목록은 일반 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$