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!