Upload
icaro-medeiros
View
3.584
Download
1
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
Expressoes regulares no Linux
Icaro Medeiros
Universidade Federal de Pernambuco - Mestrado em Ciencia da Computacao
Debian Festival 3.0, 16 de agosto de 2008
IntroducaoHistorico rapidoMotivacoes
O que sao ER?Usos basicos
grep
sed (Stream EDitor)
Uso em linguagens de programacaoJavaPerl
DO IT YOURSELF!
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.
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...
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.
Desvantagens
I Sintaxe as vezes pouco intuitivaI Por isso, pra quem nao conhece ER: writability ruim,
legibilidade tambem.
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.
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).
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
Mais exemplos de grep
# Exibe as palavras que comecam com catgrep -E ’\<cat’ cats.txt
Pra fechar o grep
# Retorna as Pamelas da minha lista de telefone (acentosignorados)
cat lista.txt | grep -E ’".*[pP]am.*"’
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!
Quando nao usar
I Para editar apenas um documentoI Alteracoes simples que podem ser feitas num editor de
texto “normal”.
Como funciona
I Filtro: Entrada X - Saıda YI Conversor: Entrada X - Saıda X’I Enderecos ou documento inteiroI Uso intensivo de ER.
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
?
Mais exemplos
I Ta mas, qual e a sintaxe mais usada em sed? Comando s(substitute)
I sed ’s/cat/dog/g’ cats.txt
Os metacaracteres
I Vamos para o PDF!
ER em Java
I java.util.regex
I Classe Matcher
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;
}
Que problemas podemos resolver?
I Que arquivos de configuracaopodemos modificar com sedpra realizar tarefas basicas deadministracao de sistema?