10 exemplos práticos do comando Linux Grep

O comando grep fornece acesso ao utilitário grep, uma ferramenta poderosa de processamento de arquivos usada para encontrar padrões em arquivos de texto. Ele tem muitos casos de uso práticos e é certamente um dos comandos do Linux mais usados. Este guia ilustra alguns comandos grep do Linux simples, mas úteis, que têm usos no mundo real.

Arquivo de exemplo para demonstração

Criamos um arquivo de referência para ajudar os leitores a entender o grep de forma mais eficaz. Você pode criar uma cópia deste arquivo emitindo o seguinte comando shell em seu terminal.

 cat <<END >> test-file
This is a simple text file that contains
multiple strings as well as some telephone numbers
(555) 555-1234 (567) 666-2345
and email plus web addresses
[email protected]
https://google.com
ftp://mywebserver.com
END

1. Encontre texto em arquivos

Para pesquisar o padrão de texto em um arquivo, simplesmente execute grep seguido do nome do padrão. Além disso, especifique o nome do arquivo que contém o texto.

 grep "email" test-file

Este comando exibirá a linha em nosso arquivo de teste que contém a palavra email . Você também pode pesquisar o mesmo texto em vários arquivos usando grep.

 grep "example" /usr/share/dict/american-english /usr/share/dict/british-english

O comando acima exibe todas as ocorrências da palavra exemplo nos arquivos dos dicionários inglês americano e inglês .

2. Encontre palavras de correspondência exata

O comando Linux grep ilustrado no exemplo anterior também lista linhas com correspondências parciais. Use o comando fornecido a seguir se precisar apenas das ocorrências exatas de uma palavra.

 grep -w "string" test-file

A opção -w ou –word-regexp de grep limita a saída apenas para correspondências exatas. Grep consiste em alguns sinalizadores adicionais que também podem ser usados ​​com o comando padrão.

Relacionado: Como Grep obteve seu nome? A história por trás da criação do Grep

3. Ignore as distinções de maiúsculas e minúsculas

Por padrão, o grep procura padrões diferenciando maiúsculas de minúsculas. No entanto, você pode querer desligar isso se não souber em que caso o padrão ocorre de antemão.

 grep -i "this" test-file

Use a opção -i ou –ignore-case para desligar a diferenciação de maiúsculas e minúsculas.

4. Conte o número de padrões

A bandeira -c significa contagem . Ele exibe o número de correspondências encontradas para um determinado padrão. Os administradores podem usar isso para recuperar informações específicas sobre o sistema.

Você pode canalizar o comando ps com grep para contar os processos que pertencem ao usuário atual.

 ps -ef | grep -c $USER

O comando a seguir exibe o número de arquivos MP3 presentes em um diretório.

 ls ~/Music | grep -c .mp3

5. Exibir números de linha contendo correspondências

Você pode querer encontrar os números das linhas que contêm uma determinada correspondência. Use a opção -n ou –line-number de grep para fazer isso.

 cat /etc/passwd | grep -n rubaiat

Essa opção é particularmente útil para depurar códigos-fonte e solucionar problemas de arquivos de log. Para exibir todos os números de linhas no ~ / .vimrc que são usados ​​para configurar o editor de texto Vim :

 grep -n "set" ~/.vimrc

6. Encontre nomes de arquivos usando extensões

Para obter uma lista de todos os arquivos MP3 presentes no diretório ~ / Music :

 ls ~/Music/ | grep ".mp3"

Você pode substituir .mp3 por qualquer outra extensão para localizar arquivos específicos. O comando a seguir lista todos os arquivos php presentes no diretório de trabalho atual.

 ls | grep ".php"

7. Encontre padrões em arquivos compactados

O comando grep do Linux também pode encontrar padrões dentro de arquivos compactados. Você precisará usar o comando zgrep para fazer isso, entretanto. Primeiro, crie um arquivo compactado de nosso arquivo de teste digitando:

 gzip test-file

Agora, você pode pesquisar texto ou outros padrões dentro do arquivo resultante.

 zgrep email test-file.gz

8. Encontre endereços de e-mail

Os administradores também podem listar endereços de e-mail de arquivos de texto usando o comando grep do Linux. O exemplo a seguir faz isso procurando por um padrão de expressão regular.

 grep '^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[az]{2,}' test-file

Você pode encontrar expressões regulares para fazer trabalhos semelhantes ou pode criá-las você mesmo, se souber como funcionam.

9. Encontre números de telefone usando Grep

Você pode usar expressões regulares grep para filtrar números de telefone de um arquivo de texto. Observe que você terá que ajustar o padrão para corresponder ao tipo de número de telefone de que precisa.

 grep '(([0-9]{3})|[0-9]{3})[ -]?[0-9]{3}[ -]?[0-9]{4}' test-file

O comando mencionado filtra os números de telefone americanos de dez dígitos.

10. Encontre URLs de arquivos de origem

Podemos aproveitar o poder do grep para listar URLs encontrados em arquivos de texto. O comando fornecido abaixo imprime todos os URLs presentes no arquivo de teste .

 grep -E "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

Estamos novamente usando a opção -E para expressões regulares estendidas. Você também pode usar o comando egrep para evitar adicionar isso.

 egrep "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

Dominar o Comando Linux Grep

Apresentamos vários exemplos úteis do comando grep do Linux para resolver problemas do mundo real. Embora esses exemplos ilustrem o poder do grep para o processamento de texto, você precisará dominar as expressões regulares se quiser ser superprodutivo com o grep.

Às vezes, os usuários do Linux se deparam com certas situações em que não conseguem se lembrar das várias opções relacionadas a um comando. Felizmente, o sistema operacional Linux fornece maneiras de obter ajuda de linha de comando para quase todos os utilitários do sistema.