A utilização de expressões regulares no Linux é algo basta comum. Na prática, as expressões regulares podem definir padrões e ser interpretadas por alguns comentos. Apesar de serem semelhantes ao globbing (utilização de wirldcards), as expressões regulares são sem dúvida mas poderosas.
Vamos a alguns exemplos.
Falar em expressões regulares não é algo novo no Pplware até porque já apresentamos aqui um artigo sobre este tema. Como referido, , as expressões regulares permitem-nos identificar padrões, num determinado texto/palavra. Lembram-se quando usam o ‘*’, como wildcard, para identificar um conjunto de ficheiros?..o principio das expressões regulares é idêntico.
Na Internet existem alguns sites para “explorar” expressões regulares dos quais se destaca o Regexr.
Antes de começar o que precisa de saber?
As expressões regulares podem ser definidas em duas formas: básicas ou estendidas. No que diz respeito à forma básica que vamos abordar hoje é fundamental que o utilizador saiba o seguinte:
Vamos à prática
Um dos comandos mais poderosos do Linux e que permite trabalhar com expressões regulares é o grep. Este comando permite filtrar dados de várias fontes. Vamos usar para os exemplos o ficheiro /etc/passwd onde está guardada a informação sobre os utilizadores do sistema.
Exemplo1
Saber se existe o utilizador ppinto
grep ‘ppinto’ /etc/passwd
ppinto:x:501:501::/home/ppinto:/bin/bash
Exemplo2
Saber se existe o utilizador root e se aparece logo na primeira posição da linha a pesquisar
grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
Exemplo 3
Saber se existe alguma linha cuja a última palavra termine em ‘h’
grep ‘h$’ /etc/passwd
root:x:0:0:root:/root:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
ppinto:x:501:501::/home/ppinto:/bin/bash
Exemplo 4
Saber se existe alguma palavra que tenha algum dos caracteres definidos
grep [int] /etc/passwd
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
ppinto:x:501:501::/home/ppinto:/bin/bash
Exemplo 5
Saber se existe alguma palavra que comece por ‘p’ tenha 4 caracteres seguidos e termine em ‘o’
grep p….o /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
ppinto:x:501:501::/home/ppinto:/bin/bash
Exemplo 6
Saber se existe alguma palavra que comece por ‘mys’
grep ‘mys*’ /etc/passwd
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
Num próximo tutorial iremos mostrar como podemos usar expressões regulares mais complexas, recorrendo a um conjunto de exemplos práticos. Para quem precisar de uma cheat sheet aqui fica a nossa sugestão.