web-dev-qa-db-fra.com

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

Salut, je suis nouveau sous UNIX et 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 les fichiers venant avec 1 enregistrement iam obtenant des fichiers avec * au début et pour ces fichiers si j'émets la même commande iam étant compté comme 0. Est-ce que * signifie quelque chose ici et si j'obtiens un fichier avec ctrlm (CR) au lieu de NL comment obtenir le nombre de lignes dans ce fichier. donne-moi une commande qui résout le problème. Merci d'avance.

15
Devoloper250

La requête suivante vous aide à obtenir le nombre

cat FILE_NAME  | wc -l
39
Sathish Kumar

wc -l mytextfile

Ou pour sortir uniquement le nombre de lignes:

wc -l <monfichierfichier

Usage: wc [OPTION]... [FILE]...
or:  wc [OPTION]... --files0-from=F
Print newline, Word, and byte counts for each FILE, and a total line if
more than one FILE is specified.  With no FILE, or when FILE is -,
read standard input.
  -c, --bytes            print the byte counts
  -m, --chars            print the character counts
  -l, --lines            print the newline counts
  --files0-from=F    read input from the files specified by
                       NUL-terminated names in file F;
                       If F is - then read names from standard input
  -L, --max-line-length  print the length of the longest line
  -w, --words            print the Word counts
  --help     display this help and exit
  --version  output version information and exit
5
Dean Jain

Si vous avez plusieurs .csv fichiers dans le même dossier, utilisez

cat *.csv | wc -l

pour obtenir le nombre total de lignes dans tous les fichiers csv du répertoire courant. Alors, -c compte les caractères et -m compte les octets (identiques tant que vous utilisez ASCII). Vous pouvez également utiliser wc pour compter le nombre de fichiers, par exemple par: ls -l | wc -l

4
dopexxx

Toutes les réponses sont fausses. Les fichiers CSV acceptent les sauts de ligne entre guillemets qui doivent toujours être considérés comme faisant partie de la même ligne. Si vous avez soit Python ou PHP sur votre machine, vous pourriez faire quelque chose comme ceci:

Python

//From stdin
cat *.csv | python -c "import csv; import sys; print(sum(1 for i in csv.reader(sys.stdin)))"

//From file name
python -c "import csv; print(sum(1 for i in csv.reader(open('csv.csv'))))"

[~ # ~] php [~ # ~]

//From stdin
cat *.csv | php -r 'for($i=0; fgetcsv(STDIN); $i++);echo "$i\n"

//From file name
php -r 'for($i=0, $fp=fopen("csv.csv", "r"); fgetcsv($fp); $i++);echo "$i\n";'

J'ai également créé un script pour simuler la sortie de wc -l: https://github.com/dhulke/CSVCount

3