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.