Saltar para o conteúdo
101 · LPIC-1 (parte 1)

103.7 Pesquisar usando expressões regulares

TópicoT16ObjetivoPesquisar em texto e ficheiros usando expressões regulares e o comando grepPeso2PáginasLPIC-1 (101) - Version 5.0

Resumo Conciso

Conceitos de expressões regulares

SímboloSignificado
.Qualquer caractere (exceto quebra de linha)
*Zero ou mais vezes (pode não haver nenhuma ocorrência)
.*Qualquer caractere qualquer número de vezes
^Início da linha
$Fim da linha
\bDelimitador de palavra
\dQualquer dígito
\wCaractere de palavra (letra, número ou _)
\Escapa caracteres especiais
[0-9]Qualquer dígito (intervalo)
[^0-9]Qualquer coisa que não seja dígito
[a-z]Qualquer letra minúscula (intervalo)
|OU lógico

Comandos de pesquisa

ComandoDescrição
grepPesquisa em ficheiros e saídas
-cRetorna número de linhas correspondentes
-iIgnora maiúsculas/minúsculas
-lRetorna apenas nomes de ficheiros
-nMostra números das linhas
-rPesquisa recursivamente em directórios
-vInverte a correspondência (não correspondência)
-EUsa expressão regular estendida
-PUsa expressão regular Perl

Usando grep

bash
grep "root" /etc/passwd           # Busca "root" em ficheirogrep -c "bash" /etc/passwd        # Conta ocorrênciasgrep -i "error" /var/log/syslog   # Ignora maiúsculasgrep -r "iptables" /etc/          # Busca recursivagrep -n "root" /etc/passwd        # Mostra número da linhagrep -v "^#" /etc/ssh/sshd_config # Remove comentáriosgrep -E "^[A-Z].*:" mypasswd      # Regex estendida

Uso no pipe

bash
ls -l | grep "\.conf$"            # Ficheiros .confcat /var/log/auth.log | grep -i "fail"cat /etc/passwd | grep -c "bash"ls -la | grep -v "^d" | grep -v "^t"

Operadores lógicos em expressões

bash
# OU (alternativa com pipe ou grep -E)grep -E "cavalo|gato|coelho" animals.txt# Qualquer dígito de 1 a 3 vezesgrep -E "[0-9]{1,3}" ficheiro.txt

Pesquisa em directórios inteiros

bash
grep -r "password" /home/john/

Resumo visual de metacaracteres

MetacaractereDescrição
.Qualquer caractere
*Zero ou mais vezes
^Início da linha
$Fim da linha
\bDelimitador de palavra
\dQualquer dígito
\wCaractere de palavra
[0-9]Qualquer dígito
[^0-9]Qualquer coisa que não seja dígito
|OU lógico

Exercícios Guiados

  1. Pesquisar e contar ocorrências:

    bash
    $ grep -c "bash" /etc/passwd
  2. Pesquisar com pipe:

    bash
    $ cat /etc/passwd | grep -c "bash"
  3. Pesquisar com regex:

    bash
    $ grep -E "^[A-Z].*:" mypasswd | wc -l
  4. Pesquisa recursiva:

    bash
    $ grep -r "password" /home/john/
  5. Pesquisar com delimitadores:

    bash
    $ grep -E "^[A-Z].*:" mypasswd | cut -d: -f5 | cut -d, -f1

Exercícios Exploratórios

  1. Pesquisar erros em logs:
bash
$  $ grep -i "error" /var/log/syslog | head -20
  1. Pesquisar por IP em logs:
bash
$  $ grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /var/log/auth.log | head -5
  1. Pesquisar por número de telefone:
bash
$  $ grep -E "^[0-9]{3}-[0-9]{4}$" telefones.txt
  1. Pesquisar por e-mail:
bash
$  $ grep -E "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" emails.txt
  1. Pesquisar por data:
bash
$  $ grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" datas.txt