Comando Unix para obter o número de linhas em um arquivo CSV

20

Eu tenho que obter a contagem de linhas de arquivos CSV recebidos.

Eu usei o seguinte comando para obter a contagem.

wc -l filename.csv

Considere um arquivo que vem com 1 registro, estou recebendo alguns arquivos com \* no início e, para esses arquivos, se eu emitir o comando acima, ele retorna a contagem de 0 .

Por que \* no início do arquivo não é registrado como uma linha contada e existe uma solução?

    
por Devoloper250 19.03.2014 / 17:29

2 respostas

9

Um truque para garantir que também as linhas não terminadas sejam contadas pode ser:

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

Isso parece contar todas as linhas não vazias, mas ignora as linhas vazias.

Por favor, note que é bastante ineficaz, mas isso provavelmente não é um problema para uso no Ocidente.

Outra possibilidade, conta todas as linhas, incluindo a última linha não terminada:

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

Testado no RHEL 6.2. YMMV.

    
por 12.09.2014 / 16:10
1

O wc irá reportar 0 para arquivos com apenas uma linha e sem nova linha. Talvez seus arquivos csv de um registro sejam assim? Você pode procurar por novas linhas com o hexdump, por exemplo:

hexdump -C fn.csv

Procure o código ascii 0a no final.

    
por 26.03.2014 / 12:52