Commande Unix pour obtenir le nombre de lignes dans un fichier CSV

22

Je dois obtenir le nombre de lignes des fichiers CSV entrants.

J'ai utilisé la commande suivante pour obtenir le nombre.

wc -l filename.csv

Considérez un fichier avec 1 enregistrement, je reçois certains fichiers avec un \*au début, et pour ces fichiers si j'émets la commande ci-dessus, il renvoie le nombre de 0.

Pourquoi \*au début du fichier ne s'inscrit-il pas comme une ligne comptée et y a-t-il un contournement?

Devoloper250
la source
essayez "cat filename.csv | wc -l"
chaput
4
"cat filename.csv | wc -l" fait logiquement la même chose que "wc -l filename.csv" mais est moins efficace et élégant
Alex
Devoloper250, pourriez-vous clarifier un peu ce dernier paragraphe? Un exemple pourrait aussi aider.
Alex
par exemple: Je reçois des fichiers csv avec 1 enregistrement qui ont * (astérisque) au début de la ligne. Lorsque j'émets wc -l fn.csv, iam est compté comme 0, mais idéalement, il devrait être de 1. Est-ce que * (astérisque) a quelque chose de spécifique à y faire comme les autres caractères génériques ??
Devoloper250
Quels sont les résultats lorsque vous exécutez "cat filename.csv"? De plus, quelle distribution utilisez-vous?
JNevill

Réponses:

9

Une astuce pour s'assurer que les lignes non terminées sont également comptées peut être:

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

Cela semble compter toutes les lignes non vides, mais ignore les lignes vides.

Veuillez noter que c'est plutôt inefficace, mais ce n'est probablement pas un problème pour une utilisation occasionnelle.

Une autre possibilité, compte toutes les lignes, y compris la dernière ligne non terminée:

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

Testé sur RHEL 6.2. YMMV.

Trygve Flathen
la source
la awkcommande fonctionne sur OS X
Micah Stubbs
1

wc signale 0 pour les fichiers avec une seule ligne et sans retour à la ligne. Peut-être que vos fichiers csv à un enregistrement sont comme ça? Vous pouvez rechercher des sauts de ligne avec hexdump, par exemple:

hexdump -C fn.csv

Recherchez le code ascii 0a à la fin.

Trygve Flathen
la source