Você já se viu confrontado com a tarefa de procurar por uma string ou padrão específico em um arquivo, mas não tem ideia de onde começar a procurar? Bem, então aqui está o comando grep para o resgate!
Grep é uma poderosa ferramenta de busca de padrões de arquivo que vem equipada em todas as distribuições do Linux. Se por algum motivo não estiver instalado em seu sistema, você pode facilmente instalá-lo através do seu gerenciador de pacotes, conforme mostrado abaixo.
$ sudo apt install grep [On Debian, Ubuntu and Mint] $ sudo yum install grep [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/grep [On Gentoo Linux] $ sudo apk add grep [On Alpine Linux] $ sudo pacman -S grep [On Arch Linux] $ sudo zypper install grep [On OpenSUSE]
I have found that the easiest way to get your feet wet with the grep command is to just dive right in and use some real-world examples.
1. Procurar e Encontrar Arquivos no Linux
Digamos que você acabou de instalar uma nova cópia do Ubuntu em sua máquina e está pensando em experimentar scripts Python.
Você tem vasculhado a web em busca de tutoriais, mas percebe que existem duas versões diferentes de Python em uso, e você não sabe qual versão do Python está instalada no Ubuntu pelo instalador, ou se ele instalou quaisquer módulos.
Basta executar o seguinte comando dpkg com grep como mostrado:
dpkg -l | grep -i python

Primeiro, executamos dpkg –l
, que lista os pacotes *.deb
instalados no seu sistema. Segundo, encaminhamos essa saída para grep -i python
, que simplesmente declara “vá para o grep e filtre e retorne tudo com ‘python’ nele.”
A opção -i
está lá para ignorar maiúsculas e minúsculas, já que o grep é sensível a maiúsculas e minúsculas. Usar a opção -i
é um bom hábito a adotar, a menos que, é claro, você esteja tentando refinar uma pesquisa mais específica.
2. Pesquisar e Filtrar Arquivos no Linux
O grep também pode ser usado para pesquisar e filtrar dentro de arquivos individuais ou múltiplos arquivos. Vamos considerar este cenário:
Você está enfrentando alguns problemas com seu Servidor Web Apache, e você recorreu a um dos muitos fóruns incríveis na internet pedindo ajuda.
A alma bondosa que responde a você pediu para postar o conteúdo do seu arquivo /etc/apache2/apache2.conf. Não seria mais fácil para você, para o cara que está ajudando você e para todos que estão lendo, se você pudesse remover todas as linhas comentadas? Bem, você pode! Basta executar isso:
grep -v ^\# /etc/apache2/apache2.conf | grep .
A opção -v
diz ao grep para inverter sua saída, ou seja, em vez de imprimir linhas correspondentes, faça o oposto e imprima todas as linhas que não correspondem à expressão, neste caso, as linhas comentadas com #
.
Observe que também usamos grep .
no final para ocultar a saída de todas as linhas vazias. Dessa forma, vemos apenas as configurações de nosso terminal.

3. Encontrar todos os arquivos .mp3 no Linux
O grep pode ser muito útil para filtrar a partir de stdout. Por exemplo, vamos dizer que você tenha uma pasta inteira cheia de arquivos de música em diversos formatos.
Você deseja encontrar todos os arquivos *.mp3
do artista JayZ, mas não quer nenhuma das faixas remixadas. Usando um comando find com alguns pipes grep fará o truque:
# find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”
Neste exemplo, estamos usando o find para imprimir todos os arquivos com extensão *.mp3
, encaminhando-o para grep –i
para filtrar e imprimir todos os arquivos com o nome “JayZ” e então outro pipe para grep –vi
que 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 do Linux ]
4. Exibir o Número de Linhas Antes ou Depois da String de Pesquisa
Outras duas opções são os switches -A
e -B
, que exibem a linha correspondente e um número de linhas antes ou depois da string de pesquisa.
Embora a página do homem forneça uma explicação mais detalhada, eu 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 da Correspondência
A opção -C
do grep é semelhante, mas em vez de imprimir as linhas que vêm antes ou depois da string, ele imprime as linhas em qualquer direção:
# ifconfig | grep -C 2 lo TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 15314 bytes 1593769 (1.5 MB) RX errors 0 dropped 0 overruns 0 frame 0
6. Contar o Número de Correspondências
Similar à tubulação de uma string grep para a contagem de palavras (comando wc), a opção embutida do grep pode fazer o mesmo por você:
# ifconfig | grep -c inet6
7. Procurar Arquivos por uma String Dada no Linux
A opção –n
para grep é muito útil ao depurar arquivos durante erros de compilação. Ele exibe o número da linha no arquivo da string de pesquisa fornecida:
# grep -n "main" setup.py
8. Procurar uma String Recursivamente em todos os Diretórios
Se você deseja procurar por uma string no diretório atual juntamente com todos os subdiretórios, pode especificar a opção –r
para pesquisar recursivamente:
# grep -r “function” *
9. Procurar pelo Padrão Inteiro
A passagem da opção -w
para grep procura pelo padrão inteiro que está na string. Por exemplo, usando:
# ifconfig | grep -w "RUNNING"
Imprimirá a linha contendo 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 por uma palavra inteira.
10. Pesquisar uma sequência em arquivos compactados
Merecem menção alguns derivados do grep. O primeiro é zgrep, que, similar ao zcat, é para uso em arquivos compactados com gzip. Ele aceita as mesmas opções do grep e é usado da mesma forma:
# zgrep -i error /var/log/syslog.2.gz

11. Correspondência de Expressões Regulares em Arquivos
O comando egrep é outro derivado que significa “Expressão Regular Global Estendida”. Ele reconhece caracteres meta de expressão adicionais como at + ? |
e ()
.
O comando egrep é muito útil para pesquisar arquivos de origem e outras partes de código, caso necessário. Pode ser invocado do grep regular especificando a opção -E
.
grep -E
12. Pesquisar uma sequência de padrão fixo
O comando fgrep procura um arquivo ou lista de arquivos por uma sequência de padrão fixo. É o mesmo que grep -F
. Uma maneira comum de usar o fgrep é passar um arquivo de padrões para ele:
fgrep –f file_full_of_patterns.txt file_to_search.txt
Este é apenas um ponto de partida com grep, mas como você provavelmente consegue ver, é inestimável para uma variedade de propósitos. Além dos simples comandos de uma linha que implementamos, grep pode ser usado para escrever poderosos trabalhos de cron e scripts de shell robustos, para começar.
Seja criativo, experimente as opções na página do manual, e crie expressões grep que sirvam aos seus próprios propósitos!
Source:
https://www.tecmint.com/12-practical-examples-of-linux-grep-command/