[shell-script] conjunção de comandos grep usando uma lista

2006-12-24 Por tôpico Jorge Barros de Abreu
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 palavr

Re: [shell-script] conjunção de comandos grep usando uma lista

2006-12-24 Por tôpico Tiago Barcellos Peczenyj
Ola Veja este exemplo: $ seq 1 10 | grep -vE '2|3|4|5' 1 6 7 8 9 10 vc pode montar uma expressão regular com as suas palavras e usar um grep apenas. ;-) On 12/24/06, Jorge Barros de Abreu <[EMAIL PROTECTED]> wrote: > > Olá. > > Atualmente tenho um trecho de código que está dessa forma: > > L

Re: [shell-script] conjunção de comandos grep usando uma lista

2006-12-24 Por tôpico Sergio Nery Simoes
Olá Jorge, A solução anterior cobre o caso de palavras com um prefixo comum. Porém, caso as palavras sejam não tenham um prefixo comum, você pode usar uma EXPREG com agrupamento e "ou": ER="(palavra1|palavra2|palavra3|palavra4)" grep -vE "$ER" $ARQUIVO outro exemplo: ER="(bash|awk|sed|perl|pyt

[shell-script] Monitorar logs em real time

2006-12-24 Por tôpico Deivid Vilela
Amigos da lista tenho a seguinte situação: - um qmail com ocr ocasionalmente trava em determinados momentos e é necessário finalizar o processo do ocr para o mta continuar processando a fila de mensagens. - este ocr quando trava envia um código de erro no arquivo /var/log/maillog com um tail -f

Re: [shell-script] conjunção de comandos grep usando uma lista

2006-12-24 Por tôpico Jorge Barros de Abreu
Para fechar o tópico. A solução surgiu graças à colaboração dos colegas de lista. Eu preciso da LIST intacta para um processamento posterior. A solução satisfatória ficou assim cat $ARQUIVO | grep -vE "(`echo $LIST | tr ' ' '|'`)" > relatorio.txt Em 24/12/06, Jorge Barros de Abreu <[EMAIL PROT

[shell-script] Re: Não foi possível enviar sua mensagem

2006-12-24 Por tôpico Julio C. Neves
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-l