1411 Stimmen

Wie zählt man Zeilen in einem Dokument?

Ich habe Zeilen wie diese, und ich möchte wissen, wie viele Zeilen ich tatsächlich habe...

09:16:39 AM  all    2.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   94.00
09:16:40 AM  all    5.00    0.00    0.00    4.00    0.00    0.00    0.00    0.00   91.00
09:16:41 AM  all    0.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:42 AM  all    3.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:43 AM  all    0.00    0.00    1.00    0.00    1.00    0.00    0.00    0.00   98.00
09:16:44 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
09:16:45 AM  all    2.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00   92.00

Gibt es eine Möglichkeit, sie alle mit Linux-Befehlen zu zählen?

2542voto

user85509 Punkte 35174

Verwenden Sie wc:

wc -l 

Dies gibt die Anzahl der Zeilen in aus:

$ wc -l /dir/file.txt
3272485 /dir/file.txt

Oder um das aus dem Ergebnis auszuschließen, verwenden Sie wc -l < :

$ wc -l < /dir/file.txt
3272485

Sie können auch Daten an wc weiterleiten:

$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63

165voto

Lauro Oliveira Punkte 2304

Um alle Zeilen zu zählen, verwenden Sie:

$ wc -l Datei

Um nur Zeilen mit einem bestimmten Muster zu filtern und zu zählen, verwenden Sie:

$ grep -w "Muster" -c Datei

Oder verwenden Sie -v, um das Suchergebnis umzukehren:

$ grep -w "Muster" -c -v Datei

Schauen Sie in der grep-Manpage nach, um mehr über die Argumente -e, -i und -x zu erfahren...

84voto

John Kugelman Punkte 327535
wc -l <file.txt>

oder

command | wc -l

83voto

Chiru Punkte 3123

wc -l zählt keine Zeilen.

Ja, diese Antwort kommt vielleicht etwas spät, aber ich habe bisher noch niemanden gefunden, der eine robustere Lösung dokumentiert hat.

Entgegen der landläufigen Meinung erfordert POSIX nicht, dass Dateien überhaupt mit einem Zeilenumbruchzeichen enden. Ja, die Definition einer POSIX 3.206 Zeile lautet wie folgt:

Eine Sequenz von null oder mehr non- Zeichen plus einem terminierenden Zeichen.

Was jedoch vielen nicht bewusst ist, ist dass POSIX auch eine POSIX 3.195 Unvollständige Zeile definiert:

Eine Sequenz von einem oder mehr non- Zeichen am Ende der Datei.

Daher sind Dateien ohne abschließendes LF durchaus POSIX-konform.

Wenn Sie sich entscheiden, beide EOF-Typen nicht zu unterstützen, ist Ihr Programm nicht POSIX-konform.

Als Beispiel, schauen wir uns die folgende Datei an.

1 Dies ist die erste Zeile.
2 Dies ist die zweite Zeile.

Unabhängig vom EOF sind Sie sicher, dass es zwei Zeilen gibt. Sie haben das herausgefunden, indem Sie geschaut haben, wie viele Zeilen begonnen haben, nicht indem Sie geschaut haben, wie viele Zeilen beendet wurden. Mit anderen Worten, gemäß POSIX haben diese beiden Dateien beide die gleiche Anzahl von Zeilen:

1 Dies ist die erste Zeile.\n
2 Dies ist die zweite Zeile.\n

1 Dies ist die erste Zeile.\n
2 Dies ist die zweite Zeile.

Die Man-Page ist relativ klar darüber, dass wc Zeilenumbrüche zählt, wobei ein Zeilenumbruch einfach ein 0x0a Zeichen ist:

NAME
       wc - Ausgabe von Zeilenzahl, Wortzahl und Byteanzahl für jede Datei

Demnach versucht wc nicht einmal zu zählen, was man vielleicht eine "Zeile" nennen würde. Die Verwendung von wc zum Zählen von Zeilen kann je nach EOF Ihrer Eingabedatei gut zu Fehlzählungen führen.

POSIX-konforme Lösung

Sie können grep verwenden, um Zeilen wie im obigen Beispiel zu zählen. Diese Lösung ist sowohl robuster als auch genauer und sie unterstützt alle verschiedenen Varianten davon, was eine Zeile in Ihrer Datei sein könnte:

56voto

ghostdog74 Punkte 305138

Es gibt viele Möglichkeiten. Eine Möglichkeit ist die Verwendung von wc.

wc -l Datei

andere Möglichkeiten sind

awk 'END{print NR}' Datei

sed -n '$=' Datei (GNU sed)

grep -c ".*" Datei

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