Unix-Befehl zum Abrufen der Zeilenanzahl in einer CSV-Datei


22

Ich muss die Anzahl der Zeilen aus eingehenden CSV-Dateien abrufen.

Ich habe den folgenden Befehl verwendet, um die Zählung zu erhalten.

wc -l filename.csv

Betrachten Sie eine Datei mit 1 Datensatz, ich erhalte einige Dateien mit einem \*am Anfang, und für diese Dateien, wenn ich den obigen Befehl absetze, gibt es count of zurück 0.

Warum wird \*am Dateianfang nicht als gezählte Zeile eingetragen und gibt es eine Abhilfe?


versuchen Sie "cat
filename.csv

4
"cat filename.csv | wc -l" tut logischerweise das gleiche wie "wc -l filename.csv", ist aber weniger effizient und elegant
Alex

Devoloper250, könnten Sie diesen letzten Absatz etwas näher erläutern? Ein Beispiel könnte auch helfen.
Alex

Beispiel: Ich erhalte CSV-Dateien mit 1 Datensatz, die * (Sternchen) am Zeilenanfang haben. Wenn ich wc -l fn.csv gebe, werde ich als 0 gezählt, aber im Idealfall sollte es 1 sein. Hat * (Sternchen) eine bestimmte Sache zu tun, wie andere Wildcards?
Devoloper250

Was sind die Ergebnisse, wenn Sie "cat filename.csv" ausführen? Welche Distribution verwenden Sie?
JNevill

Antworten:


9

Ein Trick, um sicherzustellen, dass auch nicht terminierte Zeilen gezählt werden, kann sein:

cat filename.csv | xargs -l echo | wc -l

Dies scheint alle nicht leeren Zeilen zu zählen, überspringt jedoch leere Zeilen.

Bitte beachten Sie, dass dies eher ineffektiv ist, aber für den gelegentlichen Gebrauch wahrscheinlich kein Problem darstellt.

Eine andere Möglichkeit, zählt alle Zeilen inklusive nicht abgeschlossener letzter Zeile:

awk '{n+=1} END {print n}' filename.csv

Getestet auf RHEL 6.2. YMMV.


Der awkBefehl funktioniert unter OS X
Micah Stubbs

1

wc meldet 0 für Dateien mit nur einer Zeile und ohne nachfolgende neue Zeile. Vielleicht sind Ihre One-Record-CSV-Dateien so? Sie können mit hexdump nach abschließenden Zeilenumbrüchen suchen, zB:

hexdump -C fn.csv

Suchen Sie am Ende nach dem ASCII-Code 0a.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.