![wann zählt grep und wann nicht](https://rvso.com/image/122440/wann%20z%C3%A4hlt%20grep%20und%20wann%20nicht.png)
Die Manualpage für grep
lautet:
-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 -l
stattdessen verwenden zu müssen)?
Antwort1
grep -c
gibt 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.1
20 Übereinstimmungen, chown.1
hat 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 -H
und ä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, cat
sodass grep
keine 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$