Introdução

O comando grep (global regular expression print) é uma ferramenta poderosa no Unix/Linux para buscar por padrões em arquivos ou streams de texto. Ele verifica se as linhas de um arquivo contêm uma string específica, e imprime as linhas correspondentes. O funcionamento básico do grep é simples: ele lê o arquivo linha por linha e imprime aquelas que contêm a string de busca.

Exemplo Simples

Considere o arquivo de dados a seguir:

boot book booze machine boots bungie bark aardvark broken$tuff robots

Comando:

bash
grep "boo" a_file

Resultado:

boot
book
booze
boots

O comando acima irá imprimir todas as linhas que contêm a string “boo”. Opções Úteis do grep

Opção-n

A opção -n imprime o número da linha junto com o resultado:

grep -n "boo" a_file

Resultado:

1:boot 2:book 3:booze 5:boots

Opção-v

A opção -v faz o grep imprimir as linhas que não contêm o padrão de busca:

grep -vn "boo" a_file

Resultado:

4:machine
6:bungie
7:bark
8:aardvark
9:robots

Opção-c

A opção -c conta o número de linhas que correspondem ao padrão:

grep -c "boo" a_file

Resultado:

4

Opção-i

A opção -i ignora a diferença entre maiúsculas e minúsculas:

grep -i "BOO" a_file

Resultado:

boot
book
booze
boots

Opção-A

A opção -A imprime linhas adicionais de contexto após a linha que corresponde ao padrão:

grep -A2 "mach" a_file

Resultado:

machine
boots
bungie

Expressões Regulares

O grep usa expressões regulares para procurar padrões mais complexos. Aqui estão alguns exemplos:

Para procurar linhas que terminam com a letra "e":
grep "e$" a_file

Resultado:

booze
machine
bungie
Usando grep -E (ou egrep) para usar expressões regulares avançadas:
grep -E "boots?" a_file

Resultado:

boot
boots

Escapando Caracteres Especiais

Se você precisar procurar por um caractere especial (como $), é necessário escapar o caractere usando uma barra invertida ():

grep '\$' a_file

Resultado:

broken$tuff

Ferramentas Relacionadas

Além do grep, outras ferramentas úteis para manipulação e processamento de texto no Unix/Linux são o AWK e o SED. Essas ferramentas oferecem recursos avançados de manipulação de texto e podem ser combinadas com o grep para obter resultados mais poderosos. AWK

O AWK é uma linguagem de processamento de texto que pode ser usada para realizar operações mais complexas em arquivos de texto. Um exemplo simples de uso seria calcular a soma de uma coluna de números:

awk '{sum=sum+$1} END {print sum}' a_file

Além disso, o AWK suporta loops, condições e manipulação de variáveis, tornando-o uma ferramenta poderosa para processamento de texto. SED

O SED (stream editor) é uma ferramenta de edição de fluxo, usada para fazer transformações de texto de forma eficiente. Um exemplo básico seria substituir uma palavra por outra:

sed -e 's/input/output/' my_file

O SED é ideal para realizar edições rápidas em arquivos de texto, como substituições em massa.