Ops, acho que chupei uma balinha com os teus arquivos, mas o raciocinio continua o mesmo, basta usar a exclude.list no grep
grep -vf /../exclude.list recipients Beeem mais simples, desculpe complicar :/ On 1/17/07, Tiago Barcellos Peczenyj <[EMAIL PROTECTED]> wrote: > amigo, > > para vc executar a string conforme o seu significado vc precisa usar o > comando eval > (acho que foi tirado do livro do Julio... hehe) > > PIPE='|' > > ls $PIPE grep X # da erro > > eval ls $PIPE grep X # funciona! > > Entretanto me parece que o seu script não vai funcionar da maneira > como vc deseja. > > por que ? > > A variavel i vai receber cada string do seu arquivo, e não cada linha > $ for i in `cat exclude.list `; do echo $i ; done > teste > OK > teste1 > OK > teste2 > OK > teste3 > OK > > Eu faria assim: > > # pego a lista de linhas que não tem a palavra OK (ex: pega NOK) > grep -vw "OK" exclude.list | tratamento > /tmp/lista > > o que é tratamento? se vc usa uma palavra como NOK, vc deve removela > com sed ou algo assim. se não usa nada alem da string que vc quer > usar, basta não usar nada > > grep -vw "OK" exclude.list | tr -d ' ' > /tmp/lista > > # por que estou removendo espaços em branco? veja abaixo > > grep -vf /tmp/list recipients # uso a lista como fonte de pesquisa e > inverto a busca > > Didaticamente: > > $ cat exclude.list # o teste4 e 5 não deve aparecer! > teste OK > teste1 OK > teste2 OK > teste3 OK > teste4 > teste5 > > $ grep -vw "OK" exclude.list # humm! > teste4 > teste5 > > $ grep -vw "OK" exclude.list | tr -d ' ' > /tmp/list > > $ cat recipients # eis a lista onde o teste4 e 5 nao podem aparecer > teste1 > teste2 > teste3 > teste4 > teste5 > teste6 > teste7 > teste8 > teste9 > teste10 > > $ grep -vf /tmp/list recipients # tcharam! > teste1 > teste2 > teste3 > teste6 > teste7 > teste8 > teste9 > teste10 > > Acho que é isso que vc quer. > > []´s Tiago > > On 1/17/07, Vini < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > Pessoal, > > > > estou tentando executar o script abaixo mais ele ta dando erro.... > > > > #!/bin/bash > > > > for i in `cat /etc/postfix/exclude.list` > > do > > if [ $i <> "OK" ] > > then > > exclude="$exclude | grep -v $i" > > fi > > done > > > > cat /etc/postfix/recipients $exclude > > ### FIM #### > > > > exclude.list : > > > > teste1 > > > > recipients: > > > > teste OK > > teste1 OK > > teste2 OK > > teste3 OK > > > > se eu der um echo na ultima linha (echo "cat /etc/postfix/recipients > > $exclude") e executar a saida dele funciona, mais se eu tentar executar o > > script e ele retorna a seguinte mensagem de erro: > > > > teste OK > > teste1 OK > > teste2 OK > > teste3 OK > > cat: |: Arquivo ou diretório não encontrado > > cat: grep: Arquivo ou diretório não encontrado > > teste1 > > > > Alguem tem idéia do que pode ser? > > > > -- > > Atenciosamente, > > Vinicius. > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > -- > Tiago B Peczenyj > Linux User #405772 > > # cd /pub > # more beer > -- Tiago B Peczenyj Linux User #405772 # cd /pub # more beer
