Je dois obtenir le nombre de lignes des fichiers CSV entrants.
J'ai utilisé la commande suivante pour obtenir le compte.
wc -l filename.csv
Considérons un fichier avec 1 enregistrement, je reçois des fichiers avec un \*
au début, et pour ces fichiers, si je lance la commande ci-dessus, le nombre de 0
est renvoyé.
Pourquoi \*
au début du fichier ne s’inscrit pas en tant que ligne comptée et existe-t-il un moyen de contourner le problème?
Une astuce pour vous 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 cela 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.
wc signalera 0 pour les fichiers avec une seule ligne et sans nouvelle ligne. Peut-être que vos fichiers csv one-record sont comme ça? Vous pouvez rechercher les nouvelles lignes de fin avec hexdump, par exemple:
hexdump -C fn.csv
Recherchez le code ascii 0a à la fin.