Usar Expressões Regulares Estendidas para Buscas Complexas
Nesta etapa, você aprenderá a usar Expressões Regulares Estendidas (ERE) para realizar buscas ainda mais complexas e poderosas. O ERE oferece um conjunto mais rico de metacaracteres do que as Expressões Regulares Básicas (BRE). Para habilitar o ERE, você pode usar o comando grep -E ou seu alias tradicional, egrep. Usar grep -E é a abordagem mais moderna e recomendada.
Primeiro, vamos explorar os quantificadores. No ERE, você pode especificar o número exato de vezes que um caractere deve aparecer usando chaves {}. Por exemplo, para encontrar qualquer linha que tenha exatamente dois 'o's minúsculos juntos, você pode usar o padrão o{2}.
Execute o seguinte comando. Envolvemos o padrão em aspas simples para evitar que o shell interprete incorretamente os caracteres especiais.
grep -E 'o{2}' /etc/passwd
A saída mostrará várias linhas contendo "oo":
root:x:0:0:root:/root:/bin/bash
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
Este comando funciona porque o padrão o{2} corresponde especificamente a dois caracteres 'o' consecutivos, encontrados em "root", "spool" e outras entradas.
Em seguida, vamos olhar para a alternância. Este poderoso recurso do ERE permite que você procure por um entre vários padrões possíveis usando o símbolo de barra vertical |, que atua como um operador 'OU'.
Por exemplo, se você quisesse encontrar um registro de usuário para root ou Root (caso não tivesse certeza da capitalização), você poderia usar o seguinte comando:
grep -E 'root|Root' /etc/passwd
Este comando procura por qualquer linha contendo a string root ou a string Root. A saída mostra:
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
Tanto a linha do usuário root quanto a linha do operator correspondem porque ambas contêm a string "root" em minúsculas.
As Expressões Regulares Estendidas, habilitadas com grep -E, fornecem uma sintaxe mais expressiva e poderosa para criar padrões de busca complexos, tornando o grep uma ferramenta indispensável para o processamento de texto.