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

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

Re: Não foi possível enviar sua mensagem


From: Julio C. Neves
Subject: Re: Não foi possível enviar sua mensagem
Date: Sun, 24 Dec 2006 17:04:31 -0200

Fala Jorge,
vc poderia dar somente uma passada, não usando o for. Veja:

$ grep -Ev $(echo $LIST | sed 's/^/(/;s/ /|/g;s/$/)/') ARQUIVO

O sed transforma LIST em: (palavra1|palavra2|palavra3 |palavra4) e para o
grep -E esta construção significa palavra1 'ou' palavra2 'ou' ... 'ou'
palavran

O one-liner acima te facilita a manutenção, porém se vc não quiser nem
alterar o programa, use o melhor editor do mundo, o vi, para gravar um
arquivo com as palavras indesejadas e em seguida use a opção -f file do
grep. Veja o exemplo com números:

$ cat indesejados
2
4
6
8
10
$ cat num
1
2
3
4
5
6
7
8
9
10
$ grep -vf indesejados num
1
3
5
7
9

Feliz Natal a todos,
Julio
:wq


>
> Em 24/12/06, Jorge Barros de Abreu <address@hidden> escreveu:
> >
> >   Olá.
> >
> > Atualmente tenho um trecho de código que está dessa forma:
> >
> > LIST="palavra1 palavra2 palavra3 palavra4"
> > cat $ARQUIVO |\
> > grep -v "palavra1" |\
> > grep -v "palavra2" |\
> > grep -v "palavra3" |\
> > grep -v "palavra4" > relatorio.txt
> >
> > Eu gostaria de fazer algo assim:
> > LIST="palavra1 palavra2 palavra3 palavra4"
> > cat $ARQUIVO | for i in LIST do grep -v $i done > relatorio.txt
> >
> > O objetivo da mudança é restringir a alteração a um lugar somente. Da
> > forma
> > como está atualmente em caso de alteração tenho de modificar em dois
> > lugares
> > ficando a possibilidade de erro aumentada.
> >
> > Qual a forma correta de fazer isso?
> >
> > Obrigado.
> > --
> > Data Estelar 2454093.741690
> > http://usr.solar.com.br/~ficmatin <http://usr.solar.com.br/%7Eficmatin>
> > Desejo-lhe Paz, Vida Longa e Prosperidade.
> > São Bem Vindas Mensagens no Formato Texto Genérico com Acentos.
> >
> >  
> >
>
>
>
> --
> Goles e abraços,
> ====Red====
>



-- 
Goles e abraços,
====Red====


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



reply via email to

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