web-dev-qa-db-fra.com

Comment supprimer le nom de fichier de la sortie de wc -l?

Je souhaite compter le nombre de lignes d'un fichier à l'aide de wc -l, mais ne générer que le nombre, sans l'espace et le nom de fichier suivants. Editer à partir de commentaires: le nom de fichier peut contenir des chiffres.

Actuellement si je le fais:

wc -l /path/to/file

Sur un fichier de 176 lignes, le résultat est:

176 /path/to/file

Ceci est dans un script bash, et le nombre résultant sera assigné comme valeur d'une variable.

4
Arronical

J'utiliserais:

<file wc -l

Ce qui, contrairement à cat file | wc -l n'a pas besoin de créer un shell et d'exécuter un autre processus (et s'exécute plus rapidement):

% time </tmp/ramdisk/file wc -l     
8000000
wc -l < /tmp/ramdisk/file  0,07s user 0,06s system 97% cpu 0,132 total
% time cat /tmp/ramdisk/file | wc -l
8000000
cat /tmp/ramdisk/file  0,01s user 0,16s system 80% cpu 0,204 total
wc -l  0,09s user 0,10s system 94% cpu 0,203 total

(/tmp/ramdisk/file a été stocké dans un disque mémoire pour supprimer les entrées/sorties et la mise en cache de l'équation.)

Cependant, pour les petits fichiers, la différence est négligeable.


Une autre façon serait:

wc -l file | cut -d ' ' -f 1

Ce qui dans mes tests fonctionne approximativement de la même façon que <file wc -l.

8
kos

Vous pouvez le faire avec un simple liner utilisant un chat. cat deluge1.log | wc -l

Réponse trop simple pour exiger une réponse longue.

5
Elder Geek