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 12:30:50 -0200

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



--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

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