手冊頁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$