it-swarm.com.de

Wie kann ich die Anzahl der Zeilen einer Datei mit gängigen Tools zählen?

Ich leite die Ergebnisse von grep in eine Datei um und verwende dann cat, um den Inhalt auf dem Bildschirm anzuzeigen. Ich möchte wissen, wie viele Ergebniszeilen ich in meiner Ergebnisdatei habe, und sie dann einem Zähler hinzufügen.

Was wird der beste Weg sein? Irgendein relevantes Flag für grep oder cat?

136
k-man

Wenn Sie die Ausgabe grep bereits in einer Datei gesammelt haben, können Sie eine nummerierte Liste ausgeben mit:

cat -n myfile

Wenn Sie nur die Anzahl der Zeilen möchten, tun Sie einfach:

wc -l myfile

Es gibt absolut keinen Grund dazu:

cat myfile | wc -l

... da dies unnötig E/A (das cat) tut, das wc wiederholen muss. Außerdem haben Sie zwei Prozesse, bei denen einer ausreicht.

Wenn Sie grep an Ihr Terminal senden und am Ende eine Anzahl der Übereinstimmungen drucken möchten, haben Sie folgende Möglichkeiten:

grep whatever myfile | tee /dev/tty | wc -l
159
JRFerguson

Das -c Flag erledigt den Job. Zum Beispiel:

 grep -c ^ filename

zählt die von grep zurückgegebenen Zeilen.

Dokumentiert in der Manpage :

-c, --count Normale Ausgabe unterdrücken; Drucken Sie stattdessen eine Anzahl übereinstimmender Zeilen für jede Eingabedatei

67
peri4n

Verwenden

your_command | wc -l

Aus dem Handbuch:

NAME
       wc - print newline, Word, and byte counts for each file

...

       -l, --lines
          print the newline counts
21
aioobe

Verwenden von AWK zum Zählen der Zeilen in einer Datei

awk 'END {print NR}' filename
5
Vivek parikh

Sie können wc -l verwenden, um die Zeilenanzahl abzurufen.

Beispiel:

$ cat foobar.txt | wc -l
4

Verwenden Sie wc nicht: Die letzte Zeile wird nicht gezählt, wenn sie nicht durch das Zeilenende-Symbol abgeschlossen wird (zumindest auf einem Mac). Verwenden Sie stattdessen Folgendes:

nbLines=$(cat -n file.txt | tail -n 1 | cut -f1 | xargs)
0
ling