Pesquisa de site

O tutorial do comando Grep com exemplos para iniciantes


Neste tutorial, aprenderemos sobre o comando "grep". Grep significa Global regular expression print . Como o nome indica, Grep é usado para pesquisar arquivos de texto com expressões regulares (abreviadamente regex). Ele imprime as linhas que correspondem ao padrão fornecido em um arquivo de texto. Se nenhum arquivo for fornecido, o grep pesquisará recursivamente o padrão fornecido nos arquivos do diretório atual. Grep tem duas variantes, nomeadamente egrep e fgrep. Essas variantes estão obsoletas, mas são fornecidas para compatibilidade com versões anteriores. Em vez de usar "grep -E" e "grep -F", você pode usar "egrep" e "fgrep", respectivamente. Sem mais delongas, vamos começar.

Exemplos de comando Grep

Eu tenho um arquivo chamado file.txt com algumas palavras aleatórias. Vamos dar uma olhada no arquivo.txt:

$ cat file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
hello world
HELLO world

Para iniciar a pesquisa, basta digitar grep seguido do que você está procurando e de onde está procurando. Por exemplo, vou procurar a string "nix" no arquivo.txt. Para fazer isso, executo:

grep nix file.txt

Exemplo de saída:

ostechnix
Ostechnix
o$technix
unix

Como você pode ver na saída acima, obtivemos duas palavras que contêm o padrão correspondente “nix”. Se a string de pesquisa tiver duas palavras, mencione-as entre aspas simples, como abaixo.

$ grep 'hello world' file.txt 
hello world

Você também pode usar o sinalizador -n para mostrar os números das linhas na saída:

grep -n nix file.txt

Exemplo de saída:

1:ostechnix
2:Ostechnix
3:o$technix
6:unix

Isso pode ser útil quando você estiver trabalhando com um código muito longo.

Observe que grep diferencia maiúsculas de minúsculas. Por exemplo, quando você pesquisa por "os", não serão exibidas linhas que contenham letras maiúsculas, ou seja, Os.

Verifique o exemplo a seguir.

$ grep os file.txt 
ostechnix

Mas tenho outra palavra chamada "Ostechnix" no arquivo.txt, mas o grep não a listou.

Se você quiser, no entanto, ignorar a distinção entre maiúsculas e minúsculas, você pode usar o sinalizador "-i" como abaixo.

$ grep -i os file.txt 
ostechnix
Ostechn1x
$ grep -i 'hello world' file.txt 
hello world
HELLO world

Agora, grep não se importou com maiúsculas e minúsculas e obtivemos as palavras que contêm letras maiúsculas e minúsculas no resultado.

Também podemos canalizar a saída de um comando para o grep. Dê uma olhada no exemplo a seguir.

$ cat file.txt | grep os
ostechnix

Agora veja o que temos. A saída do arquivo.txt é canalizada para o grep e as palavras que contêm as letras "os" no arquivo.txt foram exibidas.

Também podemos usar alguns caracteres especiais ou expressões regulares no grep.

  • ^ - pesquisa no início da linha.
  • $ - pesquisa no final da linha.
  • . - Pesquise qualquer caractere.

Deixe-me mostrar um exemplo para que você possa entender onde e como usar esses caracteres especiais.

Você já sabe, podemos pesquisar as palavras que contêm a string "tech" como abaixo.

$ grep tech file.txt
ostechnix
Ostechnix
o$technix
technology

Mas e se você quisesse apenas pesquisar as linhas que começam apenas com a palavra “tecnologia”. Você não deseja exibir todas as palavras que contêm a string, mas apenas as palavras que possuem a string "tech" no início. Também é possível. É aqui que os caracteres especiais são úteis.

Para procurar as palavras que correspondem ao padrão "tech" no início da linha de um arquivo, execute:

$ grep ^tech file.txt
technology

Da mesma forma, podemos pesquisar palavras que terminam com letras específicas, por exemplo "x", como abaixo.

$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unix

Além disso, você pode encontrar as palavras que contenham qualquer caractere usando . (ponto).

Por exemplo, vamos procurar qualquer palavra que tenha "n" no arquivo.

$ grep .n file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology

Agora você deve ter um conhecimento básico do uso do grep. Vamos aprender as outras duas variantes, nomeadamente egrep e fgrep.

Exemplos de comando Egrep

egrep significa egrep estendido. É semelhante ao comando "grep -E". Ele fará todas as coisas que o grep fará. No entanto, ele fornece algumas funcionalidades adicionais, como o uso de regex complicado, do que o comando grep normal pronto para uso.

Por exemplo, podemos pesquisar qualquer palavra que comece com "l" ou "o".

Lembre-se de que usamos o símbolo circunflexo (^) para pesquisar palavras no início da linha. Portanto, nosso comando para a consulta acima será:

$ egrep '^(l|o)' file.txt
ostechnix
o$technix
linux
linus

Ver? Temos todas as palavras que começam com "l" ou "o". Observe que o comando grep normal não pode fazer isso.

Da mesma forma, podemos pesquisar as linhas que começam com qualquer intervalo de caracteres entre “l” e “u”. Isso significa que obteremos as retas que começam com l, m, n, o, p, q, r, s, t e u. Todo o resto será omitido do resultado.

$ egrep '^[l-u]' file.txt
ostechnix
o$technix
linux
linus
unix
technology

Observe que usei colchetes ([) para pesquisar o intervalo de palavras. Como o grep diferencia maiúsculas de minúsculas, ele não encontrará linhas que comecem com letras maiúsculas no intervalo especificado.

Para exibir todas as linhas que começam com letras maiúsculas e minúsculas, usamos:

egrep '^[l-u]|[L-U]' file.txt

Ou,

egrep '^([l-u]|[L-U])' file.txt

Exemplo de saída:

ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
HELLO world

Ver? Agora temos as palavras que começam com o intervalo de caracteres de "l" a "u" (maiúsculas ou minúsculas).

Exemplos de comando Fgrep

fgrep significa rápidogrep. É semelhante a "grep -F". fgrep não reconhece expressões regulares ou caracteres especiais. fgrep pode ser usado onde você deseja que expressões regulares sejam avaliadas.

Por exemplo, usamos o seguinte comando para encontrar as palavras que terminam em "x".

$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unix

Agora execute o mesmo comando com fgrep.

fgrep x$ file.txt

Não exibirá nada, pois não foi possível avaliar os caracteres especiais.

Agora vejamos outro exemplo. Para procurar as palavras que correspondem à string "o$" com o comando grep, fazemos:

grep o$ file.txt

Mas não ganhamos nada, por quê? Pois, conforme o comando acima, utilizamos o símbolo do cifrão ($) para encontrar as palavras que terminam em “o”. Como não havia caracteres que terminassem com "o" no arquivo.txt, não obtemos nada.

Agora, execute o mesmo comando com fgrep.

$ fgrep o$ file.txt 
o$technix

Ver? É aqui que usamos o comando fgrep. Ele simplesmente ignora o cifrão (o caractere especial, é claro) e exibe a palavra que contém a string "o$".

Para mais detalhes sobre grep, digite:

grep --help

Dará todas as opções possíveis. Ou consulte as páginas de manual.

man grep

Leitura sugerida:

  • Aprenda a usar páginas de manual com eficiência

Etimologia de grep

Grep foi escrito durante a noite por Ken Thompson, o mesmo cara que escreveu o Unix. Mas por que e como recebeu esse nome? O professor Brian Kernighan explica a etimologia do grep neste vídeo.

E isso é tudo. Grep é um dos comandos importantes que você deve aprender completamente.

Agora você sabe o que é grep e como usá-lo para pesquisar arquivos de texto com padrões correspondentes no GNU/Linux. Você também aprendeu como Grep recebeu esse nome. Espero que isso tenha sido útil.

Artigos relacionados