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.
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
.
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.