Ich habe solche Zeilen und 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?
linux
bash
command-line
scripting
Alucard
quelle
quelle
g <Ctrl-g>
Sie sie ein. Sie zeigt die Anzahl der Zeilen, Wörter, Spalten und Bytes an<esc> :q!
ist dies die einzige Antwort. (Dies ist ein Witz. Dadurch werden alle nicht gespeicherten Änderungen gelöscht. Wenn Sie vim nicht kennen, ist es einfach, eine Datei durcheinander zu bringen. Speichern Sie sie daher besser nicht.)Antworten:
Verwendung
wc
:Dies gibt die Anzahl der Zeilen aus in
<filename>
:Oder, um das
<filename>
aus dem Ergebnis wegzulassen, verwenden Siewc -l < <filename>
:Sie können auch Daten an folgende
wc
Adresse weiterleiten:quelle
wc -l <file> | awk '{print $1}
wc -l < <filename>
cat <file> | wc -l
watch wc -l <filename>
Sie diese Datei in Echtzeit verfolgen. Dies ist beispielsweise für Protokolldateien nützlich.Um alle Zeilen zu zählen, verwenden Sie:
Um nur Zeilen mit Muster zu filtern und zu zählen, verwenden Sie:
Oder verwenden Sie -v, um die Übereinstimmung umzukehren:
Sehen Sie sich die grep-Manpage an, um einen Blick auf die Argumente -e, -i und -x zu werfen ...
quelle
grep -c
funktioniert das manchmal besser für mich. Hauptsächlich wegen deswc -l
nervigen "Feature" -Polsterplatzpräfixes.Oder
quelle
es gibt viele Wege. Verwenden
wc
ist eins.wc -l file
andere schließen ein
awk 'END{print NR}' file
sed -n '$=' file
(GNU sed)quelle
wc -l file
gibt Ihnen die Anzahl der Zeilen UND den Dateinamen, um nur den Dateinamen zu erhalten, den Sie tun können:filename.wc -l < /filepath/filename.ext
grep -Hc ".*" file
wc -l
Zeilenumbruchzeichen und nicht die tatsächlichen Zeilen in einer Datei gezählt werden. Alle anderen in dieser Antwort enthaltenen Befehle geben Ihnen die richtige Nummer, falls Sie die Zeilen benötigen.Das Tool
wc
ist der "Wortzähler" in UNIX- und UNIX-ähnlichen Betriebssystemen. Sie können es jedoch auch zum Zählen von Zeilen in einer Datei verwenden, indem Sie die-l
Option hinzufügen .wc -l foo
zählt die Anzahl der Zeilen infoo
. Sie können die Ausgabe auch von einem Programm wie diesemls -l | wc -l
weiterleiten: Hier erfahren Sie, wie viele Dateien sich im aktuellen Verzeichnis befinden (plus eine).quelle
ls -l | wc -l
gibt Ihnen tatsächlich die Anzahl der Dateien im Verzeichnis +1 für die Gesamtgröße der Zeile. Sie können tunls -ld * | wc -l
, um die richtige Anzahl von Dateien zu erhalten.Wenn Sie die Gesamtzeile aller Dateien in einem Verzeichnis überprüfen möchten, können Sie find und wc verwenden:
quelle
Verwendung
wc
:quelle
Wenn alles, was Sie wollen, die Anzahl der Zeilen ist (und nicht die Anzahl der Zeilen und der dumme Dateiname, der zurückkommt):
Wie bereits erwähnt, funktionieren diese auch (sind aber aus anderen Gründen minderwertig):
quelle
Verwenden Sie
nl
wie folgt:Von
man nl
:quelle
wc -l
als 0 gemeldet wird . Vielen Dank.Ich habe dies verwendet:
Ich bevorzuge es gegenüber der akzeptierten Antwort, da der Dateiname nicht gedruckt wird und Sie ihn nicht verwenden müssen, um dies
awk
zu beheben. Akzeptierte Antwort:wc -l myfile.txt
Aber ich denke, das Beste ist die Antwort von GGB667:
wc -l < myfile.txt
Ich werde das wahrscheinlich von nun an verwenden. Es ist etwas kürzer als mein Weg. Ich stelle meine alte Art auf, es zu tun, falls es jemand bevorzugt. Die Ausgabe ist bei diesen beiden Methoden dieselbe.
quelle
Oben sind die bevorzugten Methoden aufgeführt, aber der Befehl "cat" kann auch hilfreich sein:
Zeigt Ihnen den gesamten Inhalt der Datei mit Zeilennummern.
quelle
Ich habe diese Frage gesehen, als ich nach einer Möglichkeit gesucht habe, mehrere Dateizeilen zu zählen. Wenn Sie also mehrere Dateizeilen einer TXT-Datei zählen möchten, können Sie dies tun:
es wird auch auf einer .txt-Datei ausgeführt;)
quelle
wc -l
zählt keine Zeilen.Ja, diese Antwort mag für die Partei etwas spät sein, aber ich habe noch niemanden gefunden, der eine robustere Lösung in den Antworten dokumentiert.
Entgegen der landläufigen Meinung erfordert POSIX, dass Dateien überhaupt nicht mit einem Zeilenumbruchzeichen enden. Ja, die Definition einer POSIX 3.206-Leitung lautet wie folgt:
Vielen Menschen ist jedoch nicht bewusst, dass POSIX POSIX 3.195 Incomplete Line auch definiert als:
Daher sind Dateien ohne Trailing
LF
perfekt POSIX-kompatibel.Wenn Sie beide EOF-Typen nicht unterstützen, ist Ihr Programm nicht POSIX-kompatibel.
Schauen wir uns als Beispiel die folgende Datei an.
Unabhängig von der EOF würden Sie sicher zustimmen, dass es zwei Zeilen gibt. Sie haben das herausgefunden, indem Sie sich angesehen haben, wie viele Zeilen gestartet wurden, und nicht, wie viele Zeilen beendet wurden. Mit anderen Worten, gemäß POSIX haben beide Dateien dieselbe Zeilenanzahl:
In der Manpage wird relativ klar über das
wc
Zählen von Zeilenumbrüchen gesprochen, wobei ein Zeilenumbruch nur ein0x0a
Zeichen ist:wc
Versuchen Sie daher nicht einmal zu zählen, was Sie als "Linie" bezeichnen könnten. Die Verwendungwc
zum Zählen von Zeilen kann je nach EOF Ihrer Eingabedatei sehr gut zu Fehlzählungen führen.POSIX-konforme Lösung
Sie können verwenden
grep
zählen Linien nur wie oben im Beispiel. Diese Lösung ist sowohl robuster als auch präziser und unterstützt die verschiedenen Varianten einer Zeile in Ihrer Datei:quelle
grep -oE '\d+'
: Um NUR die Ziffern zurückzugeben .quelle
Gibt nur die Anzahl der Zeilen zurück
quelle
Die Umleitung / Weiterleitung der Ausgabe der Datei an
wc -l
sollte ausreichen, wie folgt:was dann die Nr. nur von Zeilen.
quelle
Oder zählen Sie alle Zeilen in Unterverzeichnissen mit einem Dateinamenmuster (z. B. Protokolldateien mit Zeitstempeln im Dateinamen):
quelle
Ich weiß, das ist alt, aber immer noch: Zähle gefilterte Zeilen
Meine Datei sieht aus wie:
Wenn ich wissen möchte, wie viele Dateien gesendet werden OK:
ODER
quelle
Anzahl der Zeilen zählen und Ergebnis in Variable speichern Verwenden Sie diesen Befehl:
count=$(wc -l < file.txt) echo "Number of lines: $count"
quelle
Wie andere sagten,
wc -l
ist dies die beste Lösung, aber für zukünftige Referenzzwecke können Sie Perl verwenden:$.
enthält Zeilennummer undEND
Block wird am Ende des Skripts ausgeführt.quelle
dir | perl -lne 'END { print $. }' Can't find string terminator "'" anywhere before EOF at -e line 1.'
perl -lne '}{ print $. '
macht das gleiche.Ich habe gerade ein Programm gemacht, um dies zu tun (mit
node
)https://github.com/danschumann/gimme-lines/tree/master
quelle
wc -l <filename>
Dadurch erhalten Sie die Anzahl der Zeilen und den Dateinamen in der Ausgabe.
Z.B.
wc -l 24-11-2019-04-33-01-url_creator.log
Ausgabe
63 24-11-2019-04-33-01-url_creator.log
Verwenden
wc -l <filename>|cut -d\ -f 1
um nur die Anzahl der Zeilen in der Ausgabe zu erhalten.
Z.B.
wc -l 24-11-2019-04-33-01-url_creator.log|cut -d\ -f 1
Ausgabe
63
quelle
wc -l < filename
wc -l < filename
unterscheidet sich vonwc -l filename
, die erste verwendet die Umleitung und dann gibt es keinen Dateinamen in der Ausgabe, wie in der Antwort von user85509Diese tragbare Shell-Funktion [ℹ] wirkt wie ein Zauber. Fügen Sie einfach das folgende Snippet zu Ihrer
.bashrc
Datei hinzu (oder das Äquivalent für Ihre Shell-Umgebung) .Dies sollte zusätzlich zu bash und zsh mit allen POSIX-kompatiblen Shells vollständig kompatibel sein .
quelle