Zeilen schnell zählen

1157
msh210

Ich verwende Windows 7 und habe GnuWin32. Ich habe eine Textdatei mit mehreren Gigabyte und LF (\n ) - Zeilenenden. Ich möchte wissen, wie viele Zeilen es hat (oder alternativ, wie viele LFs es hat, also etwa eine weniger, aber das ist mir egal). Was ist der schnellste oder billigste Weg, um meine Antwort zu erhalten?

Einige Möglichkeiten (obwohl ich sicher bin, dass ich einige vermisse):

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

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

2
Meine Antwort gibt einige andere Möglichkeiten. Ich lasse Sie das Timing machen und uns alle wissen lassen, welches das schnellste ist;) DavidPostill vor 8 Jahren 0
Sind Sie zu Schlussfolgerungen gekommen? DavidPostill vor 8 Jahren 0

2 Antworten auf die Frage

3
DavidPostill

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 

Lesen Sie weiter

0
Chibueze Opata

Das schnellste für mich ist die Befehlszeile: find /v /c "" foo.txt

Ich bin noch einen richtigen Maßstab zu tun, aber ich habe versucht typeund (get-content foo | measure-object -line)für eine 10 GB - Datei auf einem 2 GB RAM Server, aber sie haben viel zu lange abzuschließen. Finden Sie jedoch schnell genug zurück

Sie schlagen eine Lösung vor, die bereits vorgeschlagen wurde. Bitte zahlen Sie nur dann eine Antwort, wenn Sie zusätzliche Informationen erhalten. Haben Sie mehrere Möglichkeiten miteinander verglichen? Welche? Was war das Ergebnis? Was war dein Testfall? ... Máté Juhász vor 5 Jahren 1
@ MátéJuhász Ich habe es anderswo nicht gefunden. Der Befehl "find" ist nicht dasselbe wie "type". In einer Eile gepostet, aber die Antwort wird mit mehr Details aktualisiert. Chibueze Opata vor 5 Jahren 0