12 Exemplos Práticos do Comando Grep do Linux

Já alguma vez te deparaste com a tarefa de procurar uma sequência ou padrão específico num ficheiro, mas não tens ideia por onde começar a procurar? Bem, então aqui está o comando grep para te salvar!

grep é uma poderosa ferramenta de busca de padrões em ficheiros que vem instalada em todas as distribuições de Linux. Se, por algum motivo, não estiver instalada no teu sistema, podes facilmente instalá-la através do teu gestor de pacotes, como mostrado.

$ 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 Ficheiros no Linux

Vamos supor que acabaste de instalar uma cópia nova do Ubuntu na tua máquina e que vais tentar fazer scripting em Python.

Estiveste a pesquisar na web por tutoriais, mas vês que existem duas versões diferentes de Python em uso, e não sabes qual versão de Python está instalada no Ubuntu pelo instalador, ou se instalou algum módulo.

Simplesmente executa o seguinte comando dpkg com grep como mostrado:

dpkg -l | grep -i python
Finding Files with Grep Command

Primeiro, executamos dpkg -l, que lista os pacotes instalados *.deb no seu sistema. Em segundo lugar, encaminhamos essa saída para grep -i python, que simplesmente indica “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 se adotar, a menos que, é claro, você esteja tentando definir 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 vários arquivos. Vamos considerar este cenário:

Você está tendo alguns problemas com o seu Servidor Web Apache, e você recorreu a um dos muitos fóruns incríveis na internet pedindo ajuda.

A alma gentil 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ê, a pessoa que está te ajudando e 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, o que significa que 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 #.

Observe que também usamos grep . no final para ocultar a saída de todas as linhas vazias. Dessa forma, só vemos as configurações de nosso terminal.

Print Uncommented Lines in Linux

3. Encontrar todos os Arquivos .mp3 no Linux

O grep pode ser muito útil para filtrar a partir de stdout. Por exemplo, digamos 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. Usar 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 para o grep –i para filtrar e imprimir todos os arquivos com o nome “JayZ” e depois 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: 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 comutadores -A e -B, que exibem a linha correspondente e um número de linhas que vêm antes ou depois da string de pesquisa.

Enquanto a página do manual fornece uma explicação mais detalhada, acho mais fácil lembrar as opções como -A = depois, e -B = antes:

ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP
Print Number of Lines Before and After String

5. Imprime o Número de Linhas em Torno 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 de 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. Pesquisar Arquivos por uma String Dada no Linux

A opção -n para o 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. Pesquisar uma String Recursivamente em Todos os Diretórios

Se você deseja pesquisar 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. Pesquisar pelo Padrão Inteiro

Passar a opção -w para o grep pesquisa pelo padrão inteiro que está na string. Por exemplo, usando:

# ifconfig | grep -w "RUNNING"

Irá imprimir a linha contendo o padrão entre aspas. Por outro lado, se você tentar:

# ifconfig | grep -w "RUN"
Find Entire Pattern

Nada será retornado, pois não estamos pesquisando por um padrão, mas por uma palavra inteira.

10. Pesquisar uma string em arquivos compactados

Merecem menção alguns derivados do grep. O primeiro é zgrep, que, similar ao zcat, é para uso em arquivos compactados. Ele aceita as mesmas opções que grep e é usado da mesma maneira:

# zgrep -i error /var/log/syslog.2.gz
Search String in Gzipped Files

11. Correspondência de Expressões Regulares em Arquivos

O comando egrep é outro derivado que significa “Expressão Regular Global Estendida”. Ele reconhece caracteres especiais de expressão adicionais como at + ? | e ().

comando egrep é muito útil para pesquisar arquivos de origem e outras partes de código, caso haja necessidade. Pode ser invocado a partir do grep regular especificando a opção -E.

grep -E

12. Pesquisar uma String de Padrão Fixo

O comando fgrep busca um arquivo ou lista de arquivos por uma string de padrão fixo. É o mesmo que grep -F. Uma forma 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, o grep pode ser usado para escrever trabalhos cron poderosos e scripts de shell robustos, para começar.

Seja criativo, experimente as opções na man page 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/