shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re: [shell-script] expressao regular


From: Julio C. Neves
Subject: Re: Re: [shell-script] expressao regular
Date: Wed, 28 Apr 2010 14:19:48 -0300

2 erros no emprego do grep:
- O conteúdo do echo não tem necessidade de proteger com aspas, porém o do
grep, apesar de não ser obrigatório, é sempre conveniente que seja
protegido;
- O grep tem suas limitação que algumas vezes força o uso de opção -E
(extended). O ponto de perguntação (?) ;) é uma dessas. Ou vc escapa-o com
uma contrabarra ou usa a opção -E.

Ficaria assim:
$ echo fed | grep -E fe?d
fed
$ echo fed | grep 'fe\?d'
fed
$ echo fd | grep -E fe?d
fd
$ echo fd | grep 'fe\?d'

Em tempo: não confunda a interpretação do ?:
  - em uma expressão regular (em sed, grep, awk, expr, test, ...), significa
que a entidade imediatamente anterior é opcional;
  - em uma expansão de arquivos (que é feita pelo shell) significa qq um e
somente um caractere (o DOS copiou somente este).

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Aracaju turma de Shell em 12/05 - address@hidden;
- DF turma de Shell em 12/06 - ligue (61)3223-3000;
- RJ turma de Shell em 14/06 - ligue (21)2210-6061;
- Floripa turma de Shell e Zenity 12/07 – address@hidden;
- Turmas fechadas em outras cidades ligue (21)8112-9988.


Em 28 de abril de 2010 12:36, <address@hidden> escreveu:

>
>
>
> Obrigado pelas respostas esclarecedoras.
>
> Agora ficou outra dúvida: não estou conseguindo usar o "?":
>
> eric@NOTEERIC:~/Downloads/hds$ echo "fed" | grep fed
> fed
> eric@NOTEERIC:~/Downloads/hds$ echo "fed" | grep fe?d
> eric@NOTEERIC:~/Downloads/hds$
>
> Pelo que eu li, "?" significa uma ou nenhuma ocorrência do caracter
> precedente. Tá faltando algum símbolo?
>
> sds
>
> Eric
>
> On Ter 27/04/10 16:53 , Bruno Coimbra 
> address@hidden<bbcoimbra%40gmail.com>sent:
> > Em Tue, 27 Apr 2010, address@hidden <microbiu%40terra.com.br>escreveu:
> > >
> > > Por favor, como ficaria a expressão regular para eu substituir
> > desde "DIV" até o primeiro ">" da string abaixo:
> > >
> > > 60-01-68-00/00
> > Acho que isso resolve:
> > texto='60-01-68-00/00'
> > echo $texto | sed 's/(]+(>.*)$/12/'
> > []s
> > --
> > Bruno Coimbra a.k.a. sceadugenga
> > address@hidden <bbcoimbra%40gmail.com>
> > Existem 11 tipos de pessoa:
> > as que entendem binário,
> > as que acham que entendem,
> > e as que não entendem
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]