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.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$ 

相關內容