372 Stimmen

Anzahl der Zeilen in der Terminalausgabe zählen

Konnte dies nicht auf SO finden. Ich habe den folgenden Befehl im Terminal ausgeführt:

>> grep -Rl "curl" ./

und es wird die Liste der Dateien angezeigt, in denen das Schlüsselwort curl vorkommt. Ich möchte die Anzahl der Dateien zählen. Die erste Möglichkeit, die mir einfällt, ist, die Anzahl der Zeilen in der Ausgabe zu zählen, die im Terminal erscheint. Wie kann ich das tun?

655voto

João Silva Punkte 84947

Leiten Sie das Ergebnis an wc unter Verwendung der -l ( Zeilenzahl ) schalten:

grep -Rl "curl" ./ | wc -l

67voto

JelteF Punkte 2911

Ich setze den Kommentar von EaterOfCode hier als Antwort ein.

grep selbst hat auch das Flag -c, das nur die Anzahl zurückgibt

Der Befehl und die Ausgabe könnten also wie folgt aussehen.

$ grep -Rl "curl" ./ -c
24

EDIT:

Diese Antwort mag zwar kürzer sein und daher besser erscheinen als die akzeptierte Antwort (d. h. die Verwendung von wc ). Damit bin ich nicht mehr einverstanden. Ich möchte daran erinnern, dass man Zeilen zählen kann, indem man eine Pipeline nach wc -l ist viel nützlicher, da man es mit anderen Programmen verwenden kann als grep auch.

23voto

GCS Punkte 179

Die Weiterleitung an 'wc' könnte besser sein, WENN die letzte Zeile mit einem Zeilenumbruch endet (ich weiß, dass das in diesem Fall der Fall ist)
Wenn jedoch die letzte Zeile nicht mit einem Zeilenumbruch endet, liefert "wc -l" ein falsches Ergebnis.

Zum Beispiel:

$ echo "asd" | wc -l

Wird zurückkehren 1 und

$ echo -n "asd" | wc -l

Wird zurückkehren 0


Ich verwende daher oft grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1

$ echo -n "asd" | grep "^.*$" -c
1

Dies ist näher an der Realität als das, was wc -l wird zurückkehren.

3voto

shiva Punkte 4835

"abcd4yyyy" | grep 4 -c ergibt sich die Anzahl als 1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X