Contagem de linhas em shell script

Publicado por Leonardo Damasceno em 29/09/2009

[ Hits: 31.819 ]

Blog: https://techcraic.wordpress.com

 


Contagem de linhas em shell script



Bem, há uns dias atrás um amigo me fez uma pergunta:

"Léo, como eu conto as linhas? Eu preciso listar os processos que estão rodando com o nome de Java e retornar apenas a quantidade de processos."

Bem, caso seja a pergunta de mais alguém, estou postando aqui.

Fiz um exemplo em um servidor.

Primeira maneira:

ps aux | grep iceweasel
1000 2816 13.2 12.3 184700 91348 ? Sl 11:48 7:04 /usr/lib/iceweasel/firefox-bin -a iceweasel
1000 3214 0.0 0.1 3140 772 pts/0 S+ 12:42 0:00 grep iceweasel
ps aux | grep iceweasel | wc -l
2

Explicação:

Dei o comando ps para listar os processos e usei os parâmetros aux, usei o comando grep após o pipe, que é simbolizado pelo pipe (|). utilizando o pipe você pode executar vários comandos numa mesma linha... Ou seja, o comando ps aux | grep iceweasel vai me retornar os processos que contenham "iceweasel".

Foram listados dois processos, o comando grep que foi utilizado e o iceweasel que está sendo executado (Iceweasel é um navegador). Então abaixo eu fiz a mesma coisa, utilizei o mesmo comando implementando o wc -l, para contar quantas linhas foram exibidas! E o resultado foi 2.

Bem, eu posso desconsiderar o 2 e utilizar 1, por quê? Simplesmente pelo fato de que um dos processos listados é o grep. Então o resultado verdadeiro seria 1.

Ou seja, para listar os processos com Java, eu faria:

ps aux | grep java | wc -l

Segunda maneira:

Podemos usar o parâmetro -n do comando cat. O parâmetro -n faz isto:

-n, --number
number all output lines

Total de números da saída das linhas. Abaixo tem a aplicação do comando:

cat -n arquivo.txt
1 a
2 e
3 r
4 as
5 sr
6 as
7

Note que a sétima linha está vazia, todas as últimas linhas ficam, então fica no mesmo método da primeira maneira, tiramos a última linha pra fazer a contagem, ou seja, temos 6 linhas.

Terceira maneira:

Com o grep -n podemos mostrar quais são as linhas específicas da pesquisa, por exemplo:

cat arquivo.txt | grep -n a
1:a
4:as
6:as

Fiz uma pesquisa sobre o arquivo arquivo.txt, procurando dentro dele por alguma linha que tivesse "a". Então foi exibido o resultado mostrando três linhas, dizendo que a primeira linha tem "a", a segunda e terceira linha também!

Com o grep -n a busca fica mais detalhada. :)

Outras dicas deste autor

PostgreSQL com encoding LATIN1

Enviando notificações remotamente via SSH + notify-send

Visualizando o tráfego de rede de forma organizada com Weathermap + MRTG

Iniciando Counter-Strike 1.6 no GNU/Linux

Modificando o seu localtime

Leitura recomendada

Converter maiúsculos em minúsculos e vice-versa com shell

O jeito mais fácil de escrever e executar um Shell Script no Linux

Performance awk x grep

Aulas Shell Script do zero - Parte 9

Fazendo comparações no shell com números de ponto flutuante

  

Comentários
[1] Comentário enviado por demoncyber em 29/09/2009 - 09:49h

:) recomnedo dar uma olhada no comando "nl", ele também soluciona o problema.


[2] Comentário enviado por removido em 04/07/2015 - 03:44h

Tem o grep -c que conta quantas linhas seguem o padrão.
--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts