Zeilen schnell zählen

Zeilen schnell zählen

Ich verwende Windows 7 und habe GnuWin32. Ich habe eine mehrere Gigabyte große Textdatei mit LF ( \n)-Zeilenenden. Ich möchte wissen, wie viele Zeilen sie hat (oder alternativ, wie viele LFs sie hat, also beispielsweise eins weniger, aber das ist mir egal). Was ist der schnellste oder kostengünstigste Weg, um meine Antwort zu erhalten?

Einige Möglichkeiten (obwohl ich sicher bin, dass ich einige übersehen habe):

  • wc -l foo
  • grep -c $ foo(mit -cwird nur die Anzahl der übereinstimmenden Zeilen gedruckt)
  • grep -c ^^ foo(das erste Caretzeichen entgeht dem zweiten)
  • sed -n $= foo( -nverhindert das Drucken der Zeile; $beschränkt auf die letzte Zeile; =druckt die Zeilennummer)

(Das sind die GnuWin32-Dienstprogramme. Ich kenne keine native Windows-Methode.)

Antwort1

Windows-Befehlszeilenlösung

type foo | find "" /v /c

Powershell-Lösungen

(get-content foo | measure-object -line).lines

(dir foo | select-string .).count

(type foo).count

(gc foo | measure-object | select count).count

Perl-Lösung

perl -pe '}{$_=$.' foo

Awk-Lösung

awk 'END { print NR }' foo

Weiterführende Literatur

Antwort2

Am schnellsten geht für mich die Kommandozeile:find /v /c "" foo.txt

Ich muss noch einen richtigen Benchmark durchführen, aber ich habe es typefür (get-content foo | measure-object -line)eine 10 GB-Datei auf einem 2 GB-RAM-Server versucht, aber es hat viel zu lange gedauert. Find kam jedoch schnell genug zurück

verwandte Informationen