voltar

Parâmetros úteis para o grep

O que é o grep?

Segundo o próprio manual do Linux (man grep), o grep é um comando para você procurar padrões em um arquivo. Se nenhum arquivo é dado, é feita uma busca recursiva no diretório atual e uma busca não recursiva lê as entradas padrão. Por padrão o grep imprime as linhas que combinam com o padrão desejado. Ou seja, é uma ferramenta pra você procurar algum padrão de texto dentros dos seus arquivos sem ter que efetivamente abrir o arquivo e ler tudo. Quase um Ctrl + F que olha o arquivo pra você.

O uso básico dele é grep <padrão> <arquivo>.

Rápido exemplo

Se criamos um arquivo chamado “perola_negra.txt” com o refrão da música que estou ouvindo neste exato momento (que, como é fácil de imaginar, se chama Pérola Negra)

Tente usar a roupa que eu estou usando
Tente esquecer em que ano estamos
Arranje algum sangue, escreva num pano
Pérola Negra, te amo, te amo

Rasgue a camisa, enxugue meu pranto
Como prova de amor mostre teu novo canto
Escreva num quadro em palavras gigantes
Pérola Negra, te amo, te amo

e quisermos lembrar como era aquela parte da música que dizia alguma coisa do pranto, podemos fazer

$ grep pranto perola_negra.txt
Rasgue a camisa, enxugue meu pranto

Com o termo pranto destacado geralmente por alguma cor.

Beleza, mas quais os parâmetros legais?

Peguemos o seguinte comando: grep -nr "<string qualquer>" .

Segundo a documentação, temos

  • -n é usado pra mostrar a linha do arquivo que sua string foi encontrada
  • -r significa que é recursivo, então procura nos subdiretórios dentro dos seus diretórios.
  • . usa o diretório corrente
  • -w retorna apenas as combinações completas com o padrão que você está buscando

Por exemplo, dado um arquivo teste.txt com o seguinte conteúdo

Giovana Vieira de Morais
Giovana
Gi
Gigi
gi
GiGIGI
$ grep -nw Gi teste.txt // buscando apenas por "Gi" e sua linha
./teste.txt:3: Gi
$ grep -nw gi teste.txt
./teste:txt:5: gi

Se não usássemos o -w, como no caso grep Gi teste.txt, o retorno seria praticamente todas as linhas.