O comando grep

Publicado por Anthony Collucci em 27/03/2008

[ Hits: 14.976 ]

Blog: http://www.amcollucci.com.br

 


O comando grep



Srs.,

Publiquei em meu site um artigo sobre o comando grep. Não vou postar ele de novo aqui, mas quem quiser pode acessar em:
Att,
Anthony Collucci

Outras dicas deste autor

Picocom - Gravando dados enviados via USB pelo Arduino

Duas dicas de SSH

Acelerando o apt-get ou similares

TCP/IP para sistemas embarcados

Roteiro de instalação e configuração de um Servidor Debian

Leitura recomendada

Limpando sua memória cache de forma simples (parte 2)

Executando um Comando ou Programa como Outro Usuário

Mudando o relógio no Linux

Agendando tarefas com o AT

Comando para abrir tela de desligamento do sistema no Gnome

  

Comentários
[1] Comentário enviado por SMarcell em 30/03/2008 - 17:13h

Faltou falar sobre:

- fgrep e egrep (fast grep e extended grep)
- registradores internos
- referência retroativa
- metacaracteres
- expressões regulares

Tudo isso é suportado pelo grep!

[2] Comentário enviado por acollucci em 31/03/2008 - 09:55h

valeu pelo toque vou aproveitar e acrescentar esses topicos.

[3] Comentário enviado por chaplinux em 25/01/2010 - 14:29h

deveria se excluido pessoas que colocam suas dica ou artigos em seu proprio blog ou site, pra se promover pelo vivaolinux...!! e o pior! num paga o dominio fica fora do ar! esse link naum presta mais!!!

[4] Comentário enviado por acollucci em 25/01/2010 - 18:07h

ChapLinux??

Essa eu vou ter que assinar...

Para me promover???

Trabalho a 10 anos na area de TI, da uma pesquisada no google pelo meu nome e me responde se eu precisava disso??? O link esta inativo pois o projeto acabou, porque eu não aguentava mais dar suporte a gente como voce, que nao sabe nada, e nao tem nem um comentario para contribuir.

E o tipo de usuario retardado, que entra em forum para fazer flames... E ainda por cima quase nunca sabe sobre o assunto que esta tratando.

Voce conheceu o portal administrando redes?

no auge ele recebia mais de 1000 visitas diarias, e ainda hoje recebo e-mails de pessoas que pedem as materias antigas dele. Poderia ser seu caso se voce tivesse nivel, para me solicitar alguma coisa mas como voce não tem, so digo uma coisa procura.

A isso eu escrevi depois, o cara tem 5 anos de vivaolinux, e faz 5 posts, e vem me criticar!!! PQP

Atenciosamente,
Anthony Collucci (procura no google blz ;))


[5] Comentário enviado por removido em 28/01/2010 - 08:54h

Juntamente com Anthony eu era um mantenedor do site administrandoredes.com e garanto que "promover" o site com certeza não foi a intenção de Anthony ao postar esta dica. A ideia seria de como já havia o artigo publicado em um local é contraprodutivo postá-lo novamente em outro somente para que pessoas como chaplinux possam utilizá-lo sem clicar em um link.

É realmente hilário o tipo de comentário que pessoas que criam posts no site somente para ganhar alguns pontinhos a mais conseguem fazer. Com a utilidade apenas de começar flames ou ofender pessoas que como ele fazem parte da comunidade linux seria melhor que este tipo de comentário não existisse.

Atenciosamente

André Luis da Silva Moreira (não adianta procurar no google)

[6] Comentário enviado por eowyn_k_tonks em 11/02/2010 - 09:39h

Eu também achei que era melhor que fosse aqui no viva o linux, mas muito obrigado mesmo assim.
Pelo menos, se fosse aqui, acho que ainda estaria pegando.

[7] Comentário enviado por acollucci em 27/02/2010 - 20:44h

Opa eowyn k Tonks Estou postando abaixo a materia ok?


O comando GREP

O comando grep, procura em um arquivo ou na entrada padrão linhas que coincidam com a string listada como argumento.

Não entendeu?

Ex.:

ls | grep log - a entrada do comando grep e a saída do comando ls

Lista todos os arquivos do diretorio mas só exibe aqueles que contem em alguma parte do nome do arquivo a palavra log.

grep /var/log/messages 192.168.0.1 - a entrada do comando grep é o arquivo messages

Lista todas as linhas que fazem referencia no arquivo messages ao ip 192.168.0.1


exemplo de saida comum do comando ls.

[root@administrandoredes log]# ls
anaconda.log boot.log.4 cron.4 lastlog maillog.4 messages.4 rpmpkgs secure spooler.1 teste.txt
anaconda.syslog btmp cups mail mailman mysqld.log rpmpkgs.1 secure.1 spooler.2 wtmp
boot.log cron dmesg maillog messages openvpn.log rpmpkgs.2 secure.2 spooler.3 wtmp.1
boot.log.1 cron.1 faillog maillog.1 messages.1 openvpn-status.log rpmpkgs.3 secure.3 spooler.4 yum.log
boot.log.2 cron.2 httpd maillog.2 messages.2 ppp rpmpkgs.4 secure.4 squid
boot.log.3 cron.3 iptraf maillog.3 messages.3 prelink samba spooler tallylog
[root@administrandoredes log]#

exemplo de saida do comando ls, com filtro pelo grep


[root@administrandoredes log]# ls | grep me
dmesg
messages
messages.1
messages.2
messages.3
messages.4
[root@administrandoredes log]#

Argumentos

-m Numero maximo de resultados

[root@administrandoredes log]# grep 192.168.0.1 -m 10 messages
Mar 2 04:35:01 cristal snmpd[1909]: Connection from UDP: [192.168.0.1]:36654
Mar 2 04:35:01 cristal snmpd[1909]: Received SNMP packet(s) from UDP: [192.168.0.1]:36654
Mar 2 04:35:01 cristal snmpd[1909]: Connection from UDP: [192.168.0.1]:36654
Mar 2 04:40:01 cristal snmpd[1909]: Connection from UDP: [192.168.0.1]:36654
Mar 2 04:40:01 cristal snmpd[1909]: Connection from UDP: [192.168.0.1]:36654
Mar 2 04:45:02 cristal snmpd[1909]: Connection from UDP: [192.168.0.1]:36654
Mar 2 04:45:02 cristal snmpd[1909]: Connection from UDP: [192.168.0.1]:36654
Mar 2 04:50:02 cristal snmpd[1909]: Connection from UDP: [192.168.0.1]:36654
Mar 2 04:50:02 cristal snmpd[1909]: Connection from UDP: [192.168.0.1]:36654
Mar 2 04:51:03 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14090 DF PROTO=TCP SPT=59594 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
[root@adminstrandoredes log]#

O resultado ficou limitado a 10 registros.

-i Ignora maiusculas e minusculas

[root@adminstrandoredes log]# ls | grep -i MESSAGES
messages
messages.1
messages.2
messages.3
messages.4
[root@adminstrandoredes log]#

O Filtro com a palavra MESSAGES não deveria retornar resultado algum pois o comando e case sensitive, com o argumento -i ignora maisculas e minusculas.

-v Alterna a seleção

[root@administrandoredes log]# ls | grep -v -m 10 messages
anaconda.log
anaconda.syslog
boot.log
boot.log.1
boot.log.2
boot.log.3
boot.log.4
btmp
cron
cron.1
[root@administrandoredes log]#

Com o comando -v ele lista todos os arquivos exceto o argumento, note que para diminuir o resultado eu utilizei o argumento -m 10 para limitar para 10 entradas o total de resultados exibidos

-n Exibe o numero do registro, da linha

[root@administrandoredes log]# ls | grep 192.168.0.100 -n -m 10 messages
22:Mar 2 04:51:03 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14090 DF PROTO=TCP SPT=59594 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
23:Mar 2 04:51:06 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14094 DF PROTO=TCP SPT=59594 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
24:Mar 2 04:51:12 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14101 DF PROTO=TCP SPT=59594 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
25:Mar 2 04:51:24 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14302 DF PROTO=TCP SPT=59596 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
26:Mar 2 04:51:27 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14306 DF PROTO=TCP SPT=59596 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
27:Mar 2 04:51:33 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14323 DF PROTO=TCP SPT=59596 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
28:Mar 2 04:51:45 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14359 DF PROTO=TCP SPT=59600 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
29:Mar 2 04:51:48 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14364 DF PROTO=TCP SPT=59600 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
30:Mar 2 04:51:54 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=14375 DF PROTO=TCP SPT=59600 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0
69:Mar 2 05:11:17 cristal kernel: FORWARD nao aceito: IN=eth1 OUT=eth0 SRC=192.168.0.100 DST=74.53.198.82 LEN=78 TOS=0x00 PREC=0x00 TTL=127 ID=30834 PROTO=UDP SPT=137 DPT=137 LEN=58
[root@administrandoredes log]#

Com o argumento -n exibe o numero da linha onde foi encontrado o registro

-q Suprime o resultado

[root@administrandoredes log]# ls | grep 192.168.0.100 -n -m 10 messages -q
[root@administrandoredes log]#

O argumento -q suprime todos os resultados, nao sei realmente a utilidade dele!!!! :s

-c Exibe a contagem de resultados

[root@administrandoredes log]# ls | grep 192.168.0.100 -n messages -c
285
[root@administrandoredes log]#

Mostra quantas vezes o resultado foi encontrado.



Bom, com esse artigo eu quis mostrar como usar o comando GREP, alem disso queria atentar ao fato de como comandos simples quando bem usados podem eliminar a necessidade de utilizar softwares de terceiros.

att,
Anthony Collucci
amc.collucci@gmail.com


Estou colocando a materia em nome das pessoas educadas que me pediram isso e nao para flames idiotas igual ao usuario chaplinux.


[8] Comentário enviado por landex em 10/06/2010 - 10:27h

Poxa este comando é bem utilizado e o material do seu site é bacana.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts