Comando Unix per ottenere il numero di righe in un file CSV


22

Devo ottenere il conteggio delle linee dai file CSV in arrivo.

Ho usato il seguente comando per ottenere il conteggio.

wc -l filename.csv

Considera un file in arrivo con 1 record, sto ricevendo alcuni file con \*a all'inizio e per quei file se eseguo il comando sopra restituisce il conteggio 0.

Perché \*all'inizio del file non viene registrato come linea contata e c'è un problema?


prova "cat nomefile.csv | wc -l"
chaput

4
"cat nomefile.csv | wc -l" fa logicamente la stessa cosa di "wc -l nomefile.csv" ma è meno efficiente ed elegante
Alex

Devoloper250, potresti chiarire un po 'di più quell'ultimo paragrafo? Un esempio potrebbe anche aiutare.
Alex

es: Iam sta ottenendo file CSV con 1 record che hanno * (asterisco) all'inizio della riga. Quando emetto wc -l fn.csv iam ottenendo il conteggio come 0 ma idealmente dovrebbe essere 1. Fa * (asterisco) avere qualcosa di specifico da fare lì come altri caratteri jolly ??
Devoloper250,

Quali sono i risultati quando si esegue "cat nomefile.csv"? Inoltre, quale distribuzione stai usando?
JNevill,

Risposte:


9

Un trucco per garantire che vengano conteggiate anche le linee non terminate può essere:

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

Questo sembra contare tutte le righe non vuote, ma salta le righe vuote.

Si noti che è piuttosto inefficace, ma che probabilmente non è un problema per l'uso occasionale.

Un'altra possibilità, conta tutte le righe inclusa l'ultima riga non terminata:

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

Testato su RHEL 6.2. YMMV.


il awkcomando funziona su OS X
Micah Stubbs il

1

wc riporterà 0 per i file con una sola riga e nessuna nuova riga finale. Forse i tuoi file csv a un record sono così? Puoi cercare nuove righe finali con hexdump, ad esempio:

hexdump -C fn.csv

Cerca il codice ascii 0a alla fine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.