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.
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.