Definição e uso dos comandos egrep e grep
Comando egrep:
Definindo: Procura num arquivo linhas que combinam com o que você especificou.
Exemplos:
Vamos ver o conteúdo do arquivo teste:
linha1
linha2
linha3
linha4
Agora os comandos:
# egrep linha1 teste
e o resultado é:
linha1 linha2 linha3 linha4
# egrep -n linha2 teste
e o resultado é:
2: linha2
Obs: Neste exemplo, usei o parâmetro “-n” que mostra o número da linha (2).
# egrep -v linha2 teste
como resultado temos:
linha1 linha3 linha4
Obs: Neste exemplo, com a opção -v, foi mostrado tudo, exceto o não correspondente que era a linha que tinha o conteúdo de “linha2”.
Comando grep:
Definindo: Procura uma palavra especificada, ou uma expressão, nas linhas de um arquivo. Basicamente ele faz buscas. É muito usado juntamente como o pipe (|) e caracteres coringas.
Exemplos:
# grep mozilla teste1.txt
Irá mostrar todas as linhas que contenha a palavra mozilla do arquivo teste1.txt
# grep -n mozilla teste1.txt
Irá mostrar todas as linhas que contenha a palavra mozilla do arquivo teste1.txt, numerando-as.
# grep -n mozilla teste1.txt > teste5
Irá colocar as linhas, numeradas, que contenha a palavra mozilla do arquivo teste1.txt no novo arquivo criad, o teste5.
# grep kazenin /etc/passwd
Irá procurar, e caso ache, listar a linha onde contém a palavra kazenin no arquivo /etc/passwd.
# grep ^k /etc/passwd
Irá listar a linha que contenha qualquer palavra iniciada com a letra k no arquivo especificado.
Nota: o caracter “^” significa começo de linha e o “$” significa fim da linha.
$ grep T$ /etc/firewall.sh
Irá listar todas as linhas que tenham alguma palavra que termina com T do arquivo especificado.
$ grep T$ /etc/firewall.sh > /home/teste9
Irá listar todas as linhas que tenham alguma palavra que termina com T do arquivo especificado e colocá-las no arquivo /home/teste9
$ grep -c T$ /etc/firewall.sh
Irá listar, mas não mostrar, todas as linhas que tenham alguma palavra que termina com T do arquivo especificado e retornar a quantidade todal de linhas achadas, por exemplo, 24.
# grep -v echo /home/verlogs1.sh
Irá listar todas as linhas que não (-v) tenham a palavra echo, do arquivo especificado.
# grep -v ^# /home/verlogs1.sh
Irá listar todas as linhas que não (-v) comecem (^) com o caracter # do arquivo especificado.
# grep -v ^# /home/verlogs1.sh > teste14
Irá listar todas as linhas que não comecem com o caracter #, do arquivo especificado e colocando-as no arquivo teste14.
# grep -v ^# /etc/apache/config.conf | sed -e '/^$/d'
Irá listar todas as linhas que não comecem com o caracter # e as mesmas serão direcionadas (o pipe) para o comando sed que neste caso não irá exibir as linhas em branco.
Alguns Operadores úteis:
Use o [] para casar algum caracter, ou faixa, de uma lista:
“[Ee]sta” é o mesmo para as linhas contendo “Esta” ou “esta”
“[^Ee]sta” é o mesmo para as linhas contendo “Esta” ou “esta”
[0-5] é o mesmo para as linhas contendo [012345]
[a-d] é o mesmo para as linhas contendo [abcd]
[A-D] é o mesmo para as linhas contendo [ABCD]
[[:alpha:]] é o mesmo para as linhas contendo [a-zA-Z]
[[:upper:]] é o mesmo para as linhas contendo [A-Z]
[[:lower:]] é o mesmo para as linhas contendo [a-z]
# grep "debian\|ubuntu" teste
Mostra linhas contendo “debian” ou “ubuntu” do arquivo teste
# grep "Eu gosto da distribuição \(debian\|ubuntu\)" teste
Mostra linhas contendo “Eu gosto da distribuição “debian” ou “Eu gosto da distribuição ubuntu” do arquivo teste
Escrevi este post na esperança de que seja útil e que traga algum aprendizado a alguém. Sugestões, críticas e dúvidas são bem vindas nos comentários. Sucesso a todos!