[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