Contagem de linhas em shell script

Publicado por Leonardo Damasceno em 29/09/2009

[ Hits: 31.844 ]

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

Modificando o seu localtime

Quatro áreas de trabalho no Debian com Compiz

Alterando a velocidade de sua placa de rede

Testando servidor de e-mail via telnet

Instalando o OCS Inventory

Leitura recomendada

Shell script - Variáveis especiais

Diversão no terminal com cowsay e fortunes

awk/gawk - Vídeo tutorial

Dica para automatizar suas tarefas diárias [Iniciante]

Backup no runlevel 0 (Slackware 11)

  

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