Como remover o nome do arquivo da saída wc -l?

3

Eu quero contar o número de linhas em um arquivo usando wc -l , mas apenas o número, sem o seguinte espaço e nome de arquivo. Editar dos comentários: o nome do arquivo pode ter números.

Atualmente, se eu fizer isso:

wc -l /path/to/file

Em um arquivo com 176 linhas, a saída é:

176 /path/to/file

Isto está dentro de um script bash, e o número resultante será atribuído como o valor de uma variável.

    
por Arronical 03.03.2016 / 17:50

2 respostas

7

Eu usaria:

<file wc -l

O qual, contariamente a cat file | wc -l , não precisa criar um shell e executar outro processo (e executa mais rápido):

% 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 foi armazenado em um disco RAM para tirar a E / S e o cache da equação.)

No entanto, para arquivos pequenos, a diferença é negligenciável.

Ainda outro jeito seria:

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

Qual dos meus testes executa aproximadamente o mesmo que <file wc -l .

    
por kos 03.03.2016 / 19:13
5

Você pode fazer isso com um simples liner usando cat. cat deluge1.log | wc -l

Responda de maneira simples demais para exigir uma resposta demorada.

    
por Elder Geek 03.03.2016 / 18:10

Tags