Este é o histórico da linha de comando da palestra de Expressões Regulares que ministrei no II Congresso Catarinense de Software Livre em Joiville - SC.
As Expressões Regulares são uma simbologia, um método de se descrever padrões de texto complicados ou posicionais, como "números no final da linha" ou "palavras repetidas na mesma linha".
- Data: 09-Out-2004
- Horário: 10:00
- Duração: 1 hora
- Local: Centreventos
- Participantes: 70 pessoas
- Requisitos: Nenhum
Usando o cat para que a ER fique no final da linha
$ egrep root /etc/passwd $ cat /etc/passwd | egrep root
As âncoras ^ e $ para começo e fim de linha
$ cat /etc/passwd | egrep te $ cat /etc/passwd | egrep ^te $ cat /etc/passwd | egrep bash$
O ou de caracteres [] (lista) e o OU de palavras | (pipe)
$ cat /etc/passwd | egrep '^[aeiou]' $ cat /etc/passwd | egrep '^[aeiou][aeiou]' $ cat /etc/passwd | egrep '^(root|uucp)' $ cat /etc/passwd | egrep '^(root|[aeiou][aeouiii])' $ cat /etc/passwd | egrep '^[aeiou]'
Intervalos em listas []
$ cat /etc/passwd | egrep '[0-9][0-9]' $ cat /etc/passwd | egrep '[0-9][0-9][0-9]' $ man ascii
O curinga . (ponto)
$ cat /etc/passwd | egrep '^[aeiou]' $ cat /etc/passwd | egrep '^.[aeiou]'
O repetidor {} (chaves)
$ cat /etc/passwd | egrep '^..[aeiou]' $ cat /etc/passwd | egrep '^...[aeiou]' $ cat /etc/passwd | egrep '^.{9}[aeiou]' $ cat /etc/passwd | grep '^.\{9\}[aeiou]' $ cat /etc/passwd | egrep '^.{5,9}[aeiou]' $ cat /etc/passwd | egrep '^[aeiou].{5,9}[aeiou]' $ cat /etc/passwd | egrep '^s.{5,9}[aeiou]' $ cat /etc/passwd | egrep '^(s.){5,9}[aeiou]'
A criptonita \
$ echo '[chaves]' | egrep '[' $ echo '[chaves]' | egrep '\[' $ echo '[chav\es]' | egrep '\\'
Metacaracteres vistos até agora
$ # ^ $ [] . {} ()
Cuidado ao usar a lista negada!
$ cat /etc/passwd | egrep '^[aeiou]' $ cat /etc/passwd | egrep '^[^aeiou]' $ echo @@@@@@@@@@ | egrep '^[^aeiou]'
Os atalhos ? * +
$ # * + ? $ # {0,} {1,} {0,1}
ER simples para casar uma data
$ echo 12/31/2004 | egrep '[0-9][0-9]/[0-9]{2}/[0-9]{4}' $ echo 99/99/2004 | egrep '[0-9][0-9]/[0-9]{2}/[0-9]{4}'
Usando o SED para substituir a data por uma string
$ echo 12/31/2004 | sed -r 's@[0-9][0-9]/[0-9]{2}/[0-9]{4}@nada@' $ echo 12/31/2004 | sed -r 's@([0-9][0-9])/([0-9]{2})/([0-9]{4})@nada@'
Usando SED e retrovisores para trocar de MM/DD/AAAA para DD.MM.AAAA
$ echo 12/31/2004 | sed -r 's@([0-9][0-9])/([0-9]{2})/([0-9]{4})@\1.\2.\3@' $ echo 12/31/2004 | sed -r 's@([0-9][0-9])/([0-9]{2})/([0-9]{4})@\2.\1.\3@' $ echo 12/31/2004 | sed -r 's@([0-9][0-9])/([0-9]{2})/([0-9]{4})@\2-\1-\3@'