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

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

Re: [shell-script] Grep


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Grep
Date: Wed, 17 Jan 2007 11:58:45 -0200

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 < address@hidden> 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


reply via email to

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