Frage Wie man Linien in einem Dokument zählt?


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?


746
2018-06-29 00:31


Ursprung


Antworten:


Benutzen wc:

wc -l <filename>

Dies wird die Anzahl der Zeilen ausgeben <filename>:

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

Oder, um das wegzulassen <filename> aus dem Ergebnis verwenden wc -l < <filename>:

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

Sie können auch Daten an Pipe übergeben wc auch:

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

1398
2018-06-29 00:33



Um alle Zeilen zu zählen, benutze:

$ wc -l file

So filtern und zählen Sie nur Linien mit Musterverwendung:

$ grep -w "pattern" -c file  

Oder benutze -v, um die Übereinstimmung zu invertieren:

$ grep -w "pattern" -c -v file 

Sehen Sie sich die grep man-Seite an, um sich die Argumente -e, -i und -x anzusehen ...


113
2018-06-29 00:42



wc -l <file.txt>

Oder

command | wc -l

61
2018-06-29 00:33



es gibt viele Wege. verwenden wc ist ein.

wc -l file

andere schließen ein

awk 'END{print NR}' file

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

grep -c ".*" file

39
2018-06-29 03:15



Das Werkzeug wc ist der "Wortzähler" in UNIX- und UNIX-ähnlichen Betriebssystemen, Sie können damit auch Zeilen in einer Datei zählen, indem Sie die -l Option, also wc -l foo zählt die Anzahl der Zeilen in foo. Sie können die Ausgabe auch von einem Programm wie diesem pumpen: ls -l | wc -lHier erfahren Sie, wie viele Dateien sich im aktuellen Verzeichnis befinden.


23
2018-04-01 13:37



Benutzen wc:

wc -l <filename>

20
2018-06-29 00:34



Wenn Sie die gesamte Zeile aller Dateien in einem Verzeichnis überprüfen möchten, können Sie find und wc verwenden:

find . -type f -exec wc -l {} +

16
2018-01-19 01:16



Wenn Sie nur die Anzahl der Zeilen (und nicht die Anzahl der Zeilen und der Name der blöden Datei) möchten,

wc -l < /filepath/filename.ext

Wie bereits erwähnt, funktionieren diese auch (sind aber aus anderen Gründen unterlegen):

awk 'END{print NR}' file       # not on all unixes
sed -n '$=' file               # (GNU sed) also not on all unixes
grep -c ".*" file              # overkill and probably also slower

12
2017-11-15 19:02



Benutzen nl so was:

nl filename

Von man nl:

Schreiben Sie jede Datei auf die Standardausgabe, wobei Zeilennummern hinzugefügt werden. Mit   keine FILE, oder wenn FILE ist -, lesen Sie die Standardeingabe.


6
2017-09-06 05:23



Ich habe das benutzt:

cat myfile.txt | wc -l

Ich bevorzuge es gegenüber der akzeptierten Antwort, weil es den Dateinamen nicht ausgibt, und Sie müssen nicht verwenden awk um das zu beheben. Akzeptierte Antwort:

wc -l myfile.txt

Aber ich denke, der beste ist die Antwort von GGB667:

wc -l < myfile.txt

Ich werde das wahrscheinlich von jetzt an benutzen. Es ist etwas kürzer als mein Weg. Ich setze meine alte Art auf, es zu tun, für den Fall, dass jemand es vorzieht. Die Ausgabe ist mit diesen beiden Methoden identisch.


5
2018-01-19 06:48