Escolar Documentos
Profissional Documentos
Cultura Documentos
Incrementando o Shell Com ER PDF
Incrementando o Shell Com ER PDF
Apresentação
✔Bibliografia
✔Comando grep, sed e tr
✔ Conhecendo os metacaracteres
Incrementando o Shell com ERs
Bibliografia:
➢ Comando man do sistema GNU/Linux (grep, sed, tr, ...)
➢ Aurélio Marinho Jargas (o verde: http://guia-
er.sourceforge.net/
➢ http://en.wikipedia.org/wiki/Regular_expression
http://aurelio.net/er/apostila-conhecendo-regex.pdf
Incrementando o Shell com ERs
Comando grep:
grep, egrep, fgrep – imprime linhas que casão com uma
máscara.
Exemplos:
Comando sed
sed - editor de linha de comando para filtrar e modificar um
texto.
Exemplos:
Comando tr
tr - translada ou troca caracteres
Exemplos:
Metacaracteres
Metacaracteres são caracteres com funções específicas, que
informam padrões e posições impossíveis de serem
especificadas com caracteres normais.
Exemplo:
- todas as linhas iniciadas pelos caracteres “a”,”b”,”c” e “d”, e
que terminam com “1”
- todas as linhas que possuam três números em seqüência
- todos as linhas que possuem um padrão de data
(dd/mm/aaaa)
- ...
Incrementando o Shell com ERs
O metacaracter circunflexo ^
O ^, representa o início de uma linha. Podemos usá-lo para
encontrar todas as linhas iniciadas por uma seqüência de
caracteres específicas.
Exemplos:
$ grep '^root' /etc/passwd
- filtra todas as linhas iniciadas pela palavra 'root'
$ grep '^a' /etc/passwd
- filtra todas as linhas iniciadas pelo caracter 'a'
$ sed '/^s/ d' /etc/group
- remove todas as linhas iniciadas pelo caracter 's'
$ grep -v '^s' /etc/group
- o mesmo que o sed acima
Incrementando o Shell com ERs
O metacaracter cifrão $
O $, representa um fim de uma linha. Podemos usá-lo para
encontrar todas as linhas terminadas por uma seqüência de
caracteres específicas.
Exemplos:
$ grep 'root$' /etc/group
- filtra todas as linhas terminadas pela palavra 'root'
$ grep 'bash$' /etc/passwd
- filtra todos os usuários que utilizam o bash como shell padrão
Dica do Aurélio:
ER para encontrar linhas em branco: ^$
sed '/^$/ d' /etc/profile
- remove linhas em branco do arquivo /etc/profile
Incrementando o Shell com ERs
O metacaracter de lista []
Os [] permitem limitar um conjunto de caracteres a ocupar
uma dada posição no texto.
Exemplos:
$ grep '^[aeiou]' /etc/group
- filtra todos os grupos com nome iniciado pelas vogais
$ grep '^[bcdfghjklmnpqrstvxywz]' /etc/passwd
- filtra todas os usuários cujo o nome inicia por uma consoante
$ grep '[0123456789][0123456789][0123456789]' /etc/group
- filtra todas as linhas que possuam três números em seqüência
$ sed
'y/abcdefghijklmnopqrstuvxywz/ABCDEFGHIJKLMNOPQRDTUVXYWZ/' /
etc/group
- transforma o conteúdo do /etc/group em caixa alta
Incrementando o Shell com ERs
Exemplos:
Metacaracter ponto .
O . é um metacaracter que representa “qualquer” caracter em
uma dada posição.
Exemplos:
Metacaracter chaves {}
As {} serve para indicar a quantidade de repetições de um
caracter ou metacaracter
Exemplos:
Metacaracter chaves {}
Mais exemplos:
$ egrep '^.{20,}' /etc/passwd
- filtra as linhas com 20 ou mais caracteres.
$ egrep '^.{,27}$' /etc/passwd
- filtra as linhas com menos de 27 caracteres
Metacaracter .*
O metacaracter .* equivale ao curinga * utilizado no comando
ls, ou seja, ele representa qualquer caracter em qualquer
quantidade.
$ egrep '^[aeiou].*bash$' /etc/passwd
- filtra todas as linhas iniciadas com uma vogal e terminadas
com a palavra “bash”
Resolvendo:
$ SOURCE=”lame-2.93.tar.gz”
$ echo $SOURCE | sed -r 's/(.*)-(.*)\.(.*\..*)/\1/' #nome
lame
$ echo $SOURCE | sed -r 's/(.*)-(.*)\.(.*\..*)/\2/' # versão
2.93
$ echo $SOURCE | sed -r 's/(.*)-(.*)\.(.*\..*)/\3/' # extensão
tar.gz
Incrementando o Shell com ERs
Metacaracter ou (|)
As listas, [], trabalham apenas com caracteres, mas em outras
ocasiões é necessário procurar por palavras alternativas. Para
isto de usa o ou lógico |
Quando escapar?
Dependendo do aplicativo, as ERs podem ter algumas
variações. O Aurélio montou a tabela abaixo para saber
quando escapar ou não:
Meta Posicionamento
^ início da linha
$ final da linha
Lista
[abc] casa com os caracteres a, b e c
[a-c] casa com os caracteres a, b e c
[^abd] não casa com os caracteres a, b e d
(um|dois) casa com as palavras um e dois
Repetições
a{2} casa com a letra “a” duas vezes
a{2,5} casa com a letra “a” duas a cinco vezes
a{2,} casa com a letra “a” duas vezes ou mais
a? casa com “a” letra a zero vezes ou uma
a* casa com a letra “a” zeros vezes ou mais
a+ casa com a letra “a” uma vez ou mais
Curingas
. casa com qualquer caracter uma vez
.* casa com qualquer caracter várias vezes
Incrementando o Shell com ERs
'^(0[0-9]|[12][0-9]|3[01])[-/.](0[1-9]|1[12])[-/.](19|20)[0-9]
[0-9]'
Incrementando o Shell com ERs
Solução:
Expressão Regular: [a-zA-Z_-.]+@[0-9a-zA-Z.-]+\.[a-z]{2,3}$
e quero formatar esse arquivo para dar um LOAD DATA LOCAL INFILE no mysql, para tanto
quero inserir um tab como separador de campos para separá-los na forma
FIM