Como contar linhas em um documento?

Eu tenho linhas como essas e quero saber quantas linhas eu realmente tenho …

09:16:39 AM all 2.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 94.00 09:16:40 AM all 5.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 91.00 09:16:41 AM all 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 96.00 09:16:42 AM all 3.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.00 09:16:43 AM all 0.00 0.00 1.00 0.00 1.00 0.00 0.00 0.00 98.00 09:16:44 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:16:45 AM all 2.00 0.00 6.00 0.00 0.00 0.00 0.00 0.00 92.00 

Existe uma maneira de contar todos eles usando comandos do Linux?

Use wc :

 wc -l  

Isto irá mostrar o número de linhas em :

 $ wc -l /dir/file.txt 3272485 /dir/file.txt 

Ou, para omitir o do resultado, use wc -l < :

 $ wc -l < /dir/file.txt 3272485 

Você também pode enviar dados para o wc :

 $ cat /dir/file.txt | wc -l 3272485 $ curl yahoo.com --silent | wc -l 63 

Para contar todas as linhas, use:

 $ wc -l file 

Para filtrar e contar apenas linhas com uso de padrão:

 $ grep -w "pattern" -c file 

Ou use -v para inverter o jogo:

 $ grep -w "pattern" -c -v file 

Veja a página man grep para dar uma olhada nos argumentos -e, -i e -x …

 wc -l  

Ou

 command | wc -l 

existem muitos caminhos. usar wc é um deles.

wc -l file

outros incluem

awk 'END{print NR}' file

sed -n '$=' file (GNU sed)

 grep -c ".*" file 

A ferramenta wc é o “contador de palavras” em sistemas operacionais UNIX e UNIX, você também pode usá-lo para contar linhas em um arquivo, adicionando a opção -l , então wc -l foo contará o número de linhas em foo . Você também pode canalizar a saída de um programa como este: ls -l | wc -l ls -l | wc -l , que informará quantos arquivos estão no diretório atual.

Use wc :

 wc -l  

Se você quiser verificar a linha total de todos os arquivos em um diretório, você pode usar find e wc:

 find . -type f -exec wc -l {} + 

Se tudo o que você quer é o número de linhas (e não o número de linhas e o nome do arquivo estúpido que volta):

 wc -l < /filepath/filename.ext 

Como mencionado anteriormente, estes também funcionam (mas são inferiores por outras razões):

 awk 'END{print NR}' file # not on all unixes sed -n '$=' file # (GNU sed) also not on all unixes grep -c ".*" file # overkill and probably also slower 

Use nl assim:

 nl filename 

Do man nl :

Escreva cada FILE na saída padrão, com números de linha adicionados. Sem FILE, ou quando FILE é -, leia a input padrão.

Eu tenho usado isso:

 cat myfile.txt | wc -l 

Eu prefiro a resposta aceita porque ela não imprime o nome do arquivo, e você não precisa usar o awk para corrigir isso. Resposta aceita:

wc -l myfile.txt

Mas acho que o melhor é a resposta do GGB667:

wc -l < myfile.txt

Eu provavelmente vou usar isso a partir de agora. É um pouco mais curto que o meu caminho. Eu estou colocando a minha maneira antiga de fazê-lo no caso de alguém preferir. A saída é a mesma com esses dois methods.

Acima está o método preferido, mas o comando “cat” também pode ser útil:

 cat -n  

Vai mostrar todo o conteúdo do arquivo com números de linha.

Eu vi essa pergunta enquanto estava procurando uma maneira de contar várias linhas de arquivos, então se você quiser contar várias linhas de arquivo de um arquivo .txt você pode fazer isso,

 cat *.txt | wc -l 

ele também será executado em um arquivo .txt;)

 wc -l file.txt | cut -f3 -d" " 

Retorna apenas o número de linhas

 cat file.log | wc -l | grep -oE '\d+' 
  • grep -oE '\d+' : Para retornar os números dos dígitos SOMENTE .

Redirecionamento / Piping a saída do arquivo para wc -l deve ser suficiente, como o seguinte:

 cat /etc/fstab | wc -l 

que então forneceria o não. apenas de linhas.

Acabei de fazer um programa para fazer isso (com node )

 npm install gimme-lines gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html 

https://github.com/danschumann/gimme-lines/tree/master

Eu sei que isso é antigo, mas ainda: Conte as linhas filtradas

Meu arquivo parece:

 Number of files sent Company 1 file: foo.pdf OK Company 1 file: foo.csv OK Company 1 file: foo.msg OK Company 2 file: foo.pdf OK Company 2 file: foo.csv OK Company 2 file: foo.msg Error Company 3 file: foo.pdf OK Company 3 file: foo.csv OK Company 3 file: foo.msg Error Company 4 file: foo.pdf OK Company 4 file: foo.csv OK Company 4 file: foo.msg Error 

Se eu quiser saber quantos arquivos foram enviados OK:

 grep "OK"  | wc -l 

OU

 grep -c "OK" filename 

Como os outros disseram wc -l é a melhor solução, mas para referência futura você pode usar Perl:

 perl -lne 'END { print $. }' 

$. contém o número da linha e o bloco END será executado no final do script.