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 <[EMAIL PROTECTED]> 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]
