20
Express ˜ oes regulares no Linux ´ Icaro Medeiros Universidade Federal de Pernambuco - Mestrado em Ciˆ encia da Computac ¸˜ ao Debian Festival 3.0, 16 de agosto de 2008

Expressões regulares no Linux

Embed Size (px)

DESCRIPTION

Curso dado no Debian Festival 3.0 (Maceió - Alagoas - Brasil ) http://wiki.enec.org.br/AL/DebianFestival3 ::: Expressões regulares são usadas há muito tempo na Computação e têm várias aplicações práticas. Esse minicurso vai focar como elas podem ser usadas no Linux, através dos programas sed (Stream EDitor) e grep (Global Regular ExPression?). Além disso, as Expressões Regulares aparecem em várias linguagens de programação através de bibliotecas e API's de linguagens de programação como Java (classe Matcher), Perl, Javascript, dentre outras.

Citation preview

Page 1: Expressões regulares no Linux

Expressoes regulares no Linux

Icaro Medeiros

Universidade Federal de Pernambuco - Mestrado em Ciencia da Computacao

Debian Festival 3.0, 16 de agosto de 2008

Page 2: Expressões regulares no Linux

IntroducaoHistorico rapidoMotivacoes

O que sao ER?Usos basicos

grep

sed (Stream EDitor)

Uso em linguagens de programacaoJavaPerl

DO IT YOURSELF!

Page 3: Expressões regulares no Linux

Era uma vez...

I Termo apareceu com dois neurologistasI Linguagens formais e automatos

quem nao estudou, deveria

I 50s - Kleene (descricao formal matematica)orientando do Church, regular sets

I Linguagem SNOBOL - Pioneira em casamento de padroesnao exatamente ER

I Editor de textos Unix edusando a notacao de Kleene

I grep (Global Regular Expression Print) - nome herdadodo comando g/re/p do ed.

Page 4: Expressões regulares no Linux

Mais historico

I sed (Strem EDitor) - Evolucao do grep

I sed - Facilitando a vida dos coitados dos sysadminsdesde 1973

I Expressoes regulares nas linguagens:I C (regex) - Uma das primeirasI Perl - built-inI Java - API’s e classesI JavascriptI E por aı em diante...

Page 5: Expressões regulares no Linux

Vantagens: Pra que ER?

I Rapido pra processar strings fazendo casamento depadroes (pattern matching)

I Formalismo bem conhecidoI Produtividade

sysadmin com conhecimento de ER e melhor!

I Muitos softwares a usam (processadores de texto, IDE’s,Google, etc), mas poucos conhecem como aplicar ER.

passar horas pra resolver problemas simples

Veremos mais vantagens a seguir, nao perca.

Page 6: Expressões regulares no Linux

Desvantagens

I Sintaxe as vezes pouco intuitivaI Por isso, pra quem nao conhece ER: writability ruim,

legibilidade tambem.

Page 7: Expressões regulares no Linux

Definicoes

I Metodo formal para especificacao de padroes de texto,constituıdo de:

I StringsI Sımbolos com funcoes especiaisI Grupos desses sımbolosI Expressoes indicando regras.

I Exemplo: todas as palavras no texto com o padrao A duasvezes seguidas, sem espacos, ou seja, palavras com astring AA.

Page 8: Expressões regulares no Linux

Usos basicos

I Procurar um texto que voce nao lembra exatamente comoe, mas tem ideia das variacoes possıveis

I Procurar strings em locais especıficos da linha ou dapalavra (sysadmins, acalmai-vos!)vi /etc/apt/sources.list

I Programadores especificando padroes complexos -([Rr]ecuperacao|[Ee]xtracao de Informacao).

Page 9: Expressões regulares no Linux

Apresentacao do grep e toy example

I Programa simples, originalmente feito pro UnixI Retorna as linhas que contem um certo padrao de string

entradoI Uso comum:

cat /etc/apt/sources.list | grep restricted

Page 10: Expressões regulares no Linux

Mais exemplos de grep

# Exibe as palavras que comecam com catgrep -E ’\<cat’ cats.txt

Page 11: Expressões regulares no Linux

Pra fechar o grep

# Retorna as Pamelas da minha lista de telefone (acentosignorados)

cat lista.txt | grep -E ’".*[pP]am.*"’

Page 12: Expressões regulares no Linux

Apresentacao - SED

I Editor de textos nao interativoI Edicao automatizada de documentos, atraves de regrasI Quase uma LPI Uso pra um sysadmin: Verificar automaticamente senhas

em branco, apenas com numeros, apenas com letras!

Page 13: Expressões regulares no Linux

Quando nao usar

I Para editar apenas um documentoI Alteracoes simples que podem ser feitas num editor de

texto “normal”.

Page 14: Expressões regulares no Linux

Como funciona

I Filtro: Entrada X - Saıda YI Conversor: Entrada X - Saıda X’I Enderecos ou documento inteiroI Uso intensivo de ER.

Page 15: Expressões regulares no Linux

Exemplos de brinquedo II - Em sed

I Imprimindo linhas (p de print)I sed ’p’ cats.txt

Script que nao faz nada!

I sed ’1,2d’ cats.txt > cats2.txt

?

Page 16: Expressões regulares no Linux

Mais exemplos

I Ta mas, qual e a sintaxe mais usada em sed? Comando s(substitute)

I sed ’s/cat/dog/g’ cats.txt

Page 17: Expressões regulares no Linux

Os metacaracteres

I Vamos para o PDF!

Page 18: Expressões regulares no Linux

ER em Java

I java.util.regex

I Classe Matcher

Page 19: Expressões regulares no Linux

Perl, o mestre das strings e das ER

I Sintaxe de ER built-in

I if (grep /([Cc]omput|[Ii]nformat)/, @$c) {$text = $page->text;$title = $page->title;

}

Page 20: Expressões regulares no Linux

Que problemas podemos resolver?

I Que arquivos de configuracaopodemos modificar com sedpra realizar tarefas basicas deadministracao de sistema?