Contagem de linhas em shell script
Dica publicada em Shell Script / Introdução
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. :)
"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. :)