wann zählt grep und wann nicht

wann zählt grep und wann nicht

Die Manualpage für greplautet:

-c, --count: Unterdrückt die normale Ausgabe; druckt stattdessen die Anzahl der übereinstimmenden Zeilen für jede Eingabedatei.

gegeben:

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

Ich erhalte eine Liste und keine Anzahl (wie bei):

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

Was ist los mit grep -c? Was mache ich (in den obigen Befehlen), um keine Zählung zu erhalten und wc -lstattdessen verwenden zu müssen)?

Antwort1

grep -cgibt die Anzahl der übereinstimmenden Zeilen für jede Eingabedatei separat an (das ist tatsächlich der Inhalt Ihres Zitats aus dem Handbuch):

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

Hat also chmod.120 Übereinstimmungen, chown.1hat 5.

Die Auflistung der Dateinamen funktioniert hier ähnlich wie bei einem normalen grep, d.h. die Dateinamen werden aufgelistet, wenn mehr als eine Eingabedatei vorhanden ist, nicht aber, wenn nur eine vorhanden ist. Zumindest bei GNU grep lässt sich dies mit den Flags -Hund ändern -h.

Also,

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

Antwort2

Für eine Gesamtzählung verwenden Sie eine vielleicht nicht so nutzlose Verwendung von, catsodass grepkeine Zählungen pro Datei gemeldet werden

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

verwandte Informationen