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?


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.