SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
˜
         Expressoes regulares no Linux

                         ´caro Medeiros
                         I

                                                   ˆ               ¸˜
Universidade Federal de Pernambuco - Mestrado em Ciencia da Computacao


               Debian Festival 3.0, 16 de agosto de 2008
¸˜
Introducao
        ´      ´
    Historico rapido
           ¸˜
    Motivacoes

       ˜
O que sao ER?
         ´
   Usos basicos

grep

sed (Stream EDitor)

                             ¸˜
Uso em linguagens de programacao
   Java
   Perl

DO IT YOURSELF!
Era uma vez...


      Termo apareceu com dois neurologistas
                              ˆ
      Linguagens formais e automatos
             ˜
       quem nao estudou, deveria
                          ¸˜              ´
      50s - Kleene (descricao formal matematica)
       orientando do Church, regular sets
                                                      ˜
      Linguagem SNOBOL - Pioneira em casamento de padroes
         ˜
        nao exatamente ER
      Editor de textos Unix ed
                    ¸˜
       usando a notacao de Kleene
      grep (Global Regular Expression Print) - nome herdado
      do comando g/re/p do ed.
´
Mais historico



                                ¸˜
      sed (Strem EDitor) - Evolucao do grep
      sed - Facilitando a vida dos coitados dos sysadmins
      desde 1973
              ˜
      Expressoes regulares nas linguagens:
          C (regex) - Uma das primeiras
          Perl - built-in
          Java - API’s e classes
          Javascript
          E por a´ em diante...
                  ı
Vantagens: Pra que ER?


      ´
     Rapido pra processar strings fazendo casamento de
         ˜
     padroes (pattern matching)
     Formalismo bem conhecido
     Produtividade
                                        ´
        sysadmin com conhecimento de ER e melhor!
     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




               `
     Sintaxe as vezes pouco intuitiva
                          ˜
     Por isso, pra quem nao conhece ER: writability ruim,
                      ´
     legibilidade tambem.
¸˜
Definicoes



       ´                         ¸˜         ˜
     Metodo formal para especificacao de padroes de texto,
     constitu´do de:
             ı
         Strings
                           ¸˜
         S´mbolos com funcoes especiais
          ı
         Grupos desses s´mbolos
                         ı
                 ˜
         Expressoes indicando regras.
                                                   ˜
     Exemplo: todas as palavras no texto com o padrao A duas
     vezes seguidas, sem espacos, ou seja, palavras com a
                              ¸
     string AA.
´
Usos basicos




                               ˆ ˜
     Procurar um texto que voce nao lembra exatamente como
     ´            ´            ¸˜
     e, mas tem ideia das variacoes poss´veis
                                        ı
     Procurar strings em locais espec´ficos da linha ou da
                                     ı
     palavra (sysadmins, acalmai-vos!)
       vi /etc/apt/sources.list
                                     ˜
     Programadores especificando padroes complexos -
     ([Rr]ecuperac˜o|[Ee]xtrac˜o de Informac˜o).
                   ¸a             ¸a                ¸a
¸˜
Apresentacao do grep e toy example




      Programa simples, originalmente feito pro Unix
                                ´                 ˜
      Retorna as linhas que contem um certo padrao de string
      entrado
      Uso comum:
      cat /etc/apt/sources.list | grep restricted
Mais exemplos de grep




  # Exibe as palavras que comecam com cat
  grep -E ’<cat’ cats.txt
Pra fechar o grep




   # Retorna as Pamelas da minha lista de telefone (acentos
        ignorados)
   cat lista.txt | grep -E ’".*[pP]am.*"’
¸˜
Apresentacao - SED




                       ˜
     Editor de textos nao interativo
        ¸˜                                   ´
     Edicao automatizada de documentos, atraves de regras
     Quase uma LP
     Uso pra um sysadmin: Verificar automaticamente senhas
     em branco, apenas com numeros, apenas com letras!
                             ´
˜
Quando nao usar




     Para editar apenas um documento
            ¸˜
     Alteracoes simples que podem ser feitas num editor de
     texto “normal”.
Como funciona




     Filtro: Entrada X - Sa´da Y
                           ı
     Conversor: Entrada X - Sa´da X’
                              ı
     Enderecos ou documento inteiro
           ¸
     Uso intensivo de ER.
Exemplos de brinquedo II - Em sed




      Imprimindo linhas (p de print)
      sed ’p’ cats.txt
                    ˜
        Script que nao faz nada!
      sed ’1,2d’ cats.txt > cats2.txt
        ?
Mais exemplos




       ´          ´
     Ta mas, qual e a sintaxe mais usada em sed? Comando s
     (substitute)
     sed ’s/cat/dog/g’ cats.txt
Os metacaracteres




     Vamos para o PDF!
ER em Java




     java.util.regex
     Classe Matcher
Perl, o mestre das strings e das ER




      Sintaxe de ER built-in
        if (grep /([Cc]omput|[Ii]nformat)/, @$c) {
            $text = $page->text;
            $title = $page->title;
        }
Que problemas podemos resolver?




     Que arquivos de configuracao ¸˜
     podemos modificar com sed
                           ´
     pra realizar tarefas basicas de
                ¸˜
     administracao de sistema?

Más contenido relacionado

Similar a Expressões regulares no Linux

Por que voce deveria documentar seu codigo?
Por que voce deveria documentar seu codigo?Por que voce deveria documentar seu codigo?
Por que voce deveria documentar seu codigo?Lennon Manchester
 
Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Danilo Pinotti
 
Apresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da InformaçãoApresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da InformaçãoJunior Grossi
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power toolsArmando Reis
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Zarathon Maia
 
Curso de ShellScript - Lm02 shellscript2
Curso de ShellScript - Lm02 shellscript2Curso de ShellScript - Lm02 shellscript2
Curso de ShellScript - Lm02 shellscript2Pessoal
 
A linguagem de programação Erlang
A linguagem de programação ErlangA linguagem de programação Erlang
A linguagem de programação Erlangelliando dias
 
Delphi Conference 2011 - Desmistificando as Expressões Regulares
Delphi Conference 2011 - Desmistificando as Expressões RegularesDelphi Conference 2011 - Desmistificando as Expressões Regulares
Delphi Conference 2011 - Desmistificando as Expressões RegularesMario Guedes
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Julio Betta
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance TuningFernando Ike
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Aula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptAula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptJadna Almeida
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Pessoal
 

Similar a Expressões regulares no Linux (20)

Por que voce deveria documentar seu codigo?
Por que voce deveria documentar seu codigo?Por que voce deveria documentar seu codigo?
Por que voce deveria documentar seu codigo?
 
apostila-expressoes-regulares.pdf
apostila-expressoes-regulares.pdfapostila-expressoes-regulares.pdf
apostila-expressoes-regulares.pdf
 
Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)Minicurso de Expressões Regulares (REGEX)
Minicurso de Expressões Regulares (REGEX)
 
Apresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da InformaçãoApresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da Informação
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Curso de ShellScript - Lm02 shellscript2
Curso de ShellScript - Lm02 shellscript2Curso de ShellScript - Lm02 shellscript2
Curso de ShellScript - Lm02 shellscript2
 
A linguagem de programação Erlang
A linguagem de programação ErlangA linguagem de programação Erlang
A linguagem de programação Erlang
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Delphi Conference 2011 - Desmistificando as Expressões Regulares
Delphi Conference 2011 - Desmistificando as Expressões RegularesDelphi Conference 2011 - Desmistificando as Expressões Regulares
Delphi Conference 2011 - Desmistificando as Expressões Regulares
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Shell script
Shell script Shell script
Shell script
 
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance Tuning
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
Aula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptAula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.ppt
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7
 

Más de Ícaro Medeiros

Data Science and Culture
Data Science and CultureData Science and Culture
Data Science and CultureÍcaro Medeiros
 
Linked Data, Big Data, and User Science at Globo.com
Linked Data, Big Data, and User Science at Globo.comLinked Data, Big Data, and User Science at Globo.com
Linked Data, Big Data, and User Science at Globo.comÍcaro Medeiros
 
Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs - Front in Bahia...
Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs  - Front in Bahia...Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs  - Front in Bahia...
Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs - Front in Bahia...Ícaro Medeiros
 
Web Semântica na Globo.com (Novas Mídias UFRJ)
Web Semântica na Globo.com (Novas Mídias UFRJ)Web Semântica na Globo.com (Novas Mídias UFRJ)
Web Semântica na Globo.com (Novas Mídias UFRJ)Ícaro Medeiros
 
Linked data at globo.com - Web of Linked Entities (WoLE 2013) - WWW 2013
Linked data at globo.com - Web of Linked Entities (WoLE 2013) - WWW 2013Linked data at globo.com - Web of Linked Entities (WoLE 2013) - WWW 2013
Linked data at globo.com - Web of Linked Entities (WoLE 2013) - WWW 2013Ícaro Medeiros
 
Engenharia de ontologias
Engenharia de ontologiasEngenharia de ontologias
Engenharia de ontologiasÍcaro Medeiros
 
Schema.org - HTML semântico - Front in Maceio 2012
Schema.org - HTML semântico - Front in Maceio 2012Schema.org - HTML semântico - Front in Maceio 2012
Schema.org - HTML semântico - Front in Maceio 2012Ícaro Medeiros
 
R2R Framework: Ontology Mapping
R2R Framework: Ontology MappingR2R Framework: Ontology Mapping
R2R Framework: Ontology MappingÍcaro Medeiros
 
SameAs Networks and Beyond: Analyzing Deployment Status and Implications of o...
SameAs Networks and Beyond: Analyzing Deployment Status and Implications of o...SameAs Networks and Beyond: Analyzing Deployment Status and Implications of o...
SameAs Networks and Beyond: Analyzing Deployment Status and Implications of o...Ícaro Medeiros
 
Tag Suggestion using Multiple Sources of Knowledge
Tag Suggestion using Multiple Sources of KnowledgeTag Suggestion using Multiple Sources of Knowledge
Tag Suggestion using Multiple Sources of KnowledgeÍcaro Medeiros
 

Más de Ícaro Medeiros (13)

Data Science and Culture
Data Science and CultureData Science and Culture
Data Science and Culture
 
Linked Data, Big Data, and User Science at Globo.com
Linked Data, Big Data, and User Science at Globo.comLinked Data, Big Data, and User Science at Globo.com
Linked Data, Big Data, and User Science at Globo.com
 
Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs - Front in Bahia...
Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs  - Front in Bahia...Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs  - Front in Bahia...
Linked Data in Use: Schema.org, JSON-LD and hypermedia APIs - Front in Bahia...
 
Web Semântica na Globo.com (Novas Mídias UFRJ)
Web Semântica na Globo.com (Novas Mídias UFRJ)Web Semântica na Globo.com (Novas Mídias UFRJ)
Web Semântica na Globo.com (Novas Mídias UFRJ)
 
Linked data at globo.com - Web of Linked Entities (WoLE 2013) - WWW 2013
Linked data at globo.com - Web of Linked Entities (WoLE 2013) - WWW 2013Linked data at globo.com - Web of Linked Entities (WoLE 2013) - WWW 2013
Linked data at globo.com - Web of Linked Entities (WoLE 2013) - WWW 2013
 
Engenharia de ontologias
Engenharia de ontologiasEngenharia de ontologias
Engenharia de ontologias
 
Schema.org - HTML semântico - Front in Maceio 2012
Schema.org - HTML semântico - Front in Maceio 2012Schema.org - HTML semântico - Front in Maceio 2012
Schema.org - HTML semântico - Front in Maceio 2012
 
Ontology matching
Ontology matchingOntology matching
Ontology matching
 
R2R Framework: Ontology Mapping
R2R Framework: Ontology MappingR2R Framework: Ontology Mapping
R2R Framework: Ontology Mapping
 
SameAs Networks and Beyond: Analyzing Deployment Status and Implications of o...
SameAs Networks and Beyond: Analyzing Deployment Status and Implications of o...SameAs Networks and Beyond: Analyzing Deployment Status and Implications of o...
SameAs Networks and Beyond: Analyzing Deployment Status and Implications of o...
 
Tag Suggestion using Multiple Sources of Knowledge
Tag Suggestion using Multiple Sources of KnowledgeTag Suggestion using Multiple Sources of Knowledge
Tag Suggestion using Multiple Sources of Knowledge
 
Ontology Learning
Ontology LearningOntology Learning
Ontology Learning
 
Tag Suggestion
Tag SuggestionTag Suggestion
Tag Suggestion
 

Expressões regulares no Linux

  • 1. ˜ Expressoes regulares no Linux ´caro Medeiros I ˆ ¸˜ Universidade Federal de Pernambuco - Mestrado em Ciencia da Computacao Debian Festival 3.0, 16 de agosto de 2008
  • 2. ¸˜ Introducao ´ ´ Historico rapido ¸˜ Motivacoes ˜ O que sao ER? ´ Usos basicos grep sed (Stream EDitor) ¸˜ Uso em linguagens de programacao Java Perl DO IT YOURSELF!
  • 3. Era uma vez... Termo apareceu com dois neurologistas ˆ Linguagens formais e automatos ˜ quem nao estudou, deveria ¸˜ ´ 50s - Kleene (descricao formal matematica) orientando do Church, regular sets ˜ Linguagem SNOBOL - Pioneira em casamento de padroes ˜ nao exatamente ER Editor de textos Unix ed ¸˜ usando a notacao de Kleene grep (Global Regular Expression Print) - nome herdado do comando g/re/p do ed.
  • 4. ´ Mais historico ¸˜ sed (Strem EDitor) - Evolucao do grep sed - Facilitando a vida dos coitados dos sysadmins desde 1973 ˜ Expressoes regulares nas linguagens: C (regex) - Uma das primeiras Perl - built-in Java - API’s e classes Javascript E por a´ em diante... ı
  • 5. Vantagens: Pra que ER? ´ Rapido pra processar strings fazendo casamento de ˜ padroes (pattern matching) Formalismo bem conhecido Produtividade ´ sysadmin com conhecimento de ER e melhor! 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.
  • 6. Desvantagens ` Sintaxe as vezes pouco intuitiva ˜ Por isso, pra quem nao conhece ER: writability ruim, ´ legibilidade tambem.
  • 7. ¸˜ Definicoes ´ ¸˜ ˜ Metodo formal para especificacao de padroes de texto, constitu´do de: ı Strings ¸˜ S´mbolos com funcoes especiais ı Grupos desses s´mbolos ı ˜ Expressoes indicando regras. ˜ Exemplo: todas as palavras no texto com o padrao A duas vezes seguidas, sem espacos, ou seja, palavras com a ¸ string AA.
  • 8. ´ Usos basicos ˆ ˜ Procurar um texto que voce nao lembra exatamente como ´ ´ ¸˜ e, mas tem ideia das variacoes poss´veis ı Procurar strings em locais espec´ficos da linha ou da ı palavra (sysadmins, acalmai-vos!) vi /etc/apt/sources.list ˜ Programadores especificando padroes complexos - ([Rr]ecuperac˜o|[Ee]xtrac˜o de Informac˜o). ¸a ¸a ¸a
  • 9. ¸˜ Apresentacao do grep e toy example Programa simples, originalmente feito pro Unix ´ ˜ Retorna as linhas que contem um certo padrao de string entrado Uso comum: cat /etc/apt/sources.list | grep restricted
  • 10. Mais exemplos de grep # Exibe as palavras que comecam com cat grep -E ’<cat’ cats.txt
  • 11. Pra fechar o grep # Retorna as Pamelas da minha lista de telefone (acentos ignorados) cat lista.txt | grep -E ’".*[pP]am.*"’
  • 12. ¸˜ Apresentacao - SED ˜ Editor de textos nao interativo ¸˜ ´ Edicao automatizada de documentos, atraves de regras Quase uma LP Uso pra um sysadmin: Verificar automaticamente senhas em branco, apenas com numeros, apenas com letras! ´
  • 13. ˜ Quando nao usar Para editar apenas um documento ¸˜ Alteracoes simples que podem ser feitas num editor de texto “normal”.
  • 14. Como funciona Filtro: Entrada X - Sa´da Y ı Conversor: Entrada X - Sa´da X’ ı Enderecos ou documento inteiro ¸ Uso intensivo de ER.
  • 15. Exemplos de brinquedo II - Em sed Imprimindo linhas (p de print) sed ’p’ cats.txt ˜ Script que nao faz nada! sed ’1,2d’ cats.txt > cats2.txt ?
  • 16. Mais exemplos ´ ´ Ta mas, qual e a sintaxe mais usada em sed? Comando s (substitute) sed ’s/cat/dog/g’ cats.txt
  • 17. Os metacaracteres Vamos para o PDF!
  • 18. ER em Java java.util.regex Classe Matcher
  • 19. Perl, o mestre das strings e das ER Sintaxe de ER built-in if (grep /([Cc]omput|[Ii]nformat)/, @$c) { $text = $page->text; $title = $page->title; }
  • 20. Que problemas podemos resolver? Que arquivos de configuracao ¸˜ podemos modificar com sed ´ pra realizar tarefas basicas de ¸˜ administracao de sistema?