Você já se deparou com a tarefa de procurar por uma determinada sequência de caracteres ou padrão em um arquivo, mas não fazia ideia de por onde começar? Bem, então, o comando grep veio para o resgate!
- 1. Pesquisar e encontrar arquivos no Linux
- 2. Pesquisar e filtrar arquivos no Linux
- 3. Encontre todos os arquivos .mp3 no Linux
- 4. Exibir o número de linhas antes ou depois da string de pesquisa
- 5. Imprime o número de linhas ao redor do fósforo.
- 6. Conte o número de fósforos
- 7. Pesquisar arquivos por uma determinada string no Linux
- 8. Pesquisar uma string recursivamente em todos os diretórios
- 9. Procure o padrão completo.
- 10. Pesquisar uma sequência de caracteres em arquivos compactados com Gzip
- 11. Encontrar correspondências entre expressões regulares em arquivos
- 12. Pesquisar uma string de padrão fixo
O grep é um poderoso buscador de padrões em arquivos que vem instalado em todas as distribuições Linux. Se, por algum motivo, ele não estiver instalado no seu sistema, você pode instalá-lo facilmente através do gerenciador de pacotes, como mostrado.
$ sudo apt install grep [No Debian, Ubuntu e Mint]
$ sudo yum install grep [Em RHEL/CentOS/Fedora e Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/grep [No Gentoo Linux]
$ sudo apk add grep [No Alpine Linux]
$ sudo pacman -S grep [No Arch Linux]
$ sudo pamac install grep [No Manjaro e BigLinux](Obs; versões atuais já vem instalado)
$ sudo zypper install grep [No OpenSUSE]
Descobri que a maneira mais fácil de começar a usar o comando grep é simplesmente começar a usá-lo com exemplos do mundo real.
1. Pesquisar e encontrar arquivos no Linux
Digamos que você acabou de instalar uma nova cópia do Ubuntu em sua máquina e que vai experimentar programar em Python.
Você tem vasculhado a internet em busca de tutoriais, mas percebe que existem duas versões diferentes do Python em uso e não sabe qual versão do Python foi instalada no Ubuntu pelo instalador, ou se algum módulo foi instalado.
Basta executar o seguinte comando dpkg com grep, conforme mostrado:
dpkg -l | grep -i python

Primeiro, executamos o comando `grep` dpkg –l, que lista os pacotes *.deb instalados no seu sistema. Em seguida, direcionamos a saída para o comando `grep grep -i python`, que simplesmente diz: “Acesse o grep, filtre e retorne tudo que contenha ‘python‘”.
Existe a opção-i de ignorar maiúsculas e minúsculas, já que o grep diferencia maiúsculas de minúsculas. Usar essa opção -i é um bom hábito a se adquirir, a menos, é claro, que você esteja tentando refinar uma busca mais específica.
2. Pesquisar e filtrar arquivos no Linux
O comando grep também pode ser usado para pesquisar e filtrar em arquivos individuais ou em vários arquivos. Vejamos este cenário:
Você está tendo alguns problemas com seu servidor web Apache e entrou em contato com um dos muitos fóruns excelentes na internet em busca de ajuda.
A pessoa gentil que respondeu pediu que você postasse o conteúdo do seu arquivo /etc/apache2/apache2.conf. Não seria mais fácil para você, para quem está te ajudando e para todos que estão lendo se você pudesse remover todas as linhas comentadas? Bem, você pode! Basta executar o seguinte comando:
grep -v ^\# /etc/apache2/apache2.conf | grep.
Essa opção -v instrui o grep a inverter sua saída, ou seja, em vez de imprimir as linhas correspondentes, ele fará o oposto e imprimirá todas as linhas que não correspondem à expressão, neste caso, as #linhas comentadas.
Note que também usamos `\n` grep.no final para ocultar a saída de todas as linhas em branco. Dessa forma, vemos apenas as configurações no terminal.
3. Encontre todos os arquivos .mp3 no Linux
O comando grep pode ser muito útil para filtrar a saída padrão (stdout). Por exemplo, imagine que você tenha uma pasta inteira cheia de arquivos de música em diversos formatos diferentes.
Você quer encontrar todos os *.mp3arquivos do artista Jay-Z, mas não quer nenhuma das faixas remixadas. Usar um comando `find` com alguns pipes do `grep` resolve o problema:
# encontrar . -nome “*.mp3” | grep –i JayZ | grep –vi “remix”
Neste exemplo, estamos usando o comando `find` para imprimir todos os arquivos com uma determinada *.mp3extensão, direcionando a grep –isaída para outro comando que filtra e imprime todos os arquivos com o nome ” JayZ ” e, em seguida, outro comando grep –vique filtra e não imprime todos os nomes de arquivo com a string (em qualquer caso) ” remix “.
[Você também pode gostar de: 35 exemplos práticos do comando Find no Linux ]
4. Exibir o número de linhas antes ou depois da string de pesquisa
Outras duas opções são os parâmetros -A`and` -B, que exibem a linha correspondente e o número de linhas que vêm antes ou depois da sequência de pesquisa.
Embora a página do manual forneça uma explicação mais detalhada, acho mais fácil lembrar as opções como -A= após e -B= antes :
ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP
5. Imprime o número de linhas ao redor do fósforo.
A opção do grep -Cé semelhante, mas em vez de imprimir as linhas que vêm antes ou depois da string, ela imprime as linhas em qualquer direção:
# ifconfig | grep -C 2 lo
Erros de transmissão: 0; pacotes descartados: 0; estouros de sinal: 0; portadora: 0; colisões: 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 máscara de rede 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Loopback Local)
Pacotes RX 15314 bytes 1593769 (1,5 MB)
Erros de RX: 0; pacotes descartados: 0; estouros de buffer: 0; quadros: 0
6. Conte o número de fósforos
Semelhante ao uso do comando `grep count` para direcionar uma string para a contagem de palavras ( comando `wc` ), a opção integrada do `grep` pode realizar a mesma tarefa:
# ifconfig | grep -c inet6
7. Pesquisar arquivos por uma determinada string no Linux
A –nopção grep é muito útil ao depurar arquivos durante erros de compilação. Ela exibe o número da linha no arquivo correspondente à string de busca fornecida:
# grep -n "main" setup.py
8. Pesquisar uma string recursivamente em todos os diretórios
Se você deseja pesquisar uma string no diretório atual e em todos os seus subdiretórios, pode especificar a –ropção de pesquisa recursiva:
# grep -r “função” *
9. Procure o padrão completo.
Ao passar a -wopção para o grep, a busca ocorre por todo o padrão presente na string. Por exemplo, usando:
# ifconfig | grep -w "EXECUTANDO"
Imprimirá a linha que contém o padrão entre aspas. Por outro lado, se você tentar:
# ifconfig | grep -w "RUN"
Nada será retornado, pois não estamos procurando por um padrão, mas sim por uma palavra inteira.
10. Pesquisar uma sequência de caracteres em arquivos compactados com Gzip
Merecem ser mencionadas as variantes do grep. A primeira é o zgrep, que, similar ao zcat , é usado em arquivos compactados com gzip . Ele aceita as mesmas opções que o grep e é usado da mesma forma:
# zgrep -i erro /var/log/syslog.2.gz
11. Encontrar correspondências entre expressões regulares em arquivos
O comando egrep é outro derivado que significa “ Expressão Regular Global Estendida ”. Ele reconhece metacaracteres de expressão adicionais, como at + ? |e ().
O comando egrep é muito útil para pesquisar arquivos de código-fonte e outros trechos de código, caso seja necessário. Ele pode ser invocado a partir do grep normal , especificando a opção -E.
grep -E
12. Pesquisar uma string de padrão fixo
O comando `fgrep` pesquisa um arquivo ou lista de arquivos em busca de uma sequência de caracteres específica. É semelhante a `ls` grep -F. Uma maneira comum de usar o `fgrep` é passar um arquivo com os padrões como argumento:
fgrep –f arquivo_cheio_de_padrões.txt arquivo_para_buscar.txt
Este é apenas um ponto de partida para o uso do grep, mas, como você provavelmente já percebeu, ele é extremamente útil para diversas finalidades. Além dos comandos simples de uma linha que implementamos, o grep pode ser usado para escrever tarefas cron poderosas e scripts shell robustos, para começar.
Seja criativo, experimente as opções na página do manual e crie expressões grep que atendam às suas necessidades!

