Olá Luciano, não testei teu script mas parece-me que as linhas a seguir são redundantes:
[1]* if [ ${nomes[count_f]} == name ] then file=`echo $line |grep -o "name \".*\"" |sed 's/name//'` else if [ ${nomes[count_f]} == filename ] then file=`echo $line |grep -o "filename \".*\"" |sed 's/filename//'` fi * Como escreveste no e-mail anterior a esse que enviaste, o argumento anterior ao nome do arquivo pode ser tanto "name" quanto "filename", mas acontece que a opção [2]* file=`echo $line |grep -o "name \".*\"" |sed 's/name//'` * vai casar com as duas situações, uma vez que a string "filename" contém a string "name". Dá uma conferida aí. Acho que toda a sequência que citei em [1] pode ser substituída pela linha em [2] T+ Valtoir 2009/5/19 Luciano Estevam Rangel <lran...@scopus.com.br> > > > Pessoal muito obrigado pela ajuda e segue o script para analise de > melhorias ou mesmo como referencia para alguma coisa.... > > Não trouxe a entrada do arquivo maillog e a saida do meu script mais > prometo passar isso amanha no e-mail.... > > Obrigado mais uma vez a todos > > #!/bin/sh > cat /var/log/maillog|grep ANEXO |sed 's/:/ /g'|sed 's/=/ /g' |sed 's/??/ > /g' |while read line > do > nomes=(`echo $line`) > ########################################################## > count_from=0 > while [ $count_from != ${#nom...@]} ] > do > if [ ${nomes[$count_from]} == from ] > then > let "count_from = count_from + 1" > from=`echo ${nomes[$count_from]}` > fi > let "count_from = count_from + 1" > done > ########################################################### > count_to=0 > while [ $count_to != ${#nom...@]} ] > do > if [ ${nomes[$count_to]} == to ] > then > let "count_to = count_to + 1" > to=`echo ${nomes[$count_to]}` > fi > let "count_to = count_to + 1" > done > ########################################################### > count_f=0 > while [ $count_f != ${#nom...@]} ] > do > if [ ${nomes[count_f]} == name ] > then > file=`echo $line |grep -o "name \".*\"" |sed 's/name//'` > else > if [ ${nomes[count_f]} == filename ] > then > file=`echo $line |grep -o "filename \".*\"" |sed 's/filename//'` > fi > fi > let "count_f = count_f + 1" > done > ########################################################### > > data=`echo $line |awk '{print $1, $2, $3":"$4}'` > echo $data FROM: $from TO: $to FILENAME: $file > report > done > > Luciano Rangel > > > E assim? > > valt...@kraftwerk:~$ grep -o "name=\".*\"" t.txt | sed 's/name=//' > "TESTE DE ARQUIVO.txt" > "teste.txt" > > Valtoir > > 2009/5/18 Luciano Estevam Rangel > <lran...@scopus.com.br<lrangel%40scopus.com.br><mailto: > lrangel%40scopus.com.br <lrangel%2540scopus.com.br>> > > > > > > > > > > > > Pessoal eu tinha tentado essa alternativa também porem existe outros > tipos > > de informação com " no arquivo...Falaha minha de não especifuicar o > arquivo > > de entrada completo...sem falar que o argumento anterior tambem varia de > > name e filename > > > > Exemplo: > > > > > > May 09 13:23 DENY user teste filename="TESTE DE ARQUIVO.txt" > > May 09 13:45 ACCEPT user teste cod 1234 filename="teste.txt" > > May 09 13:50 ACCEPT "teste.rs" user 1234 cod 1234 name="teste.txt" > > > > May 09 13:55 DENY user "test.com" cof "345" cod 1222 filename="rede.pps" > > > > Obrigado ja pela ajuda de todos > > > > complementando: > > > > grep -o "user [a-z]* " t.txt | sed 's/user //' > > > > 2009/5/18 Valtoir Jardim > > <valtoirjar...@gmail.com<valtoirjardim%40gmail.com><mailto: > valtoirjardim%40gmail.com <valtoirjardim%2540gmail.com>> <valtoirjardim% > 40gmail.com><mailto: > > valtoirjardim%40gmail.com <valtoirjardim%2540gmail.com>> > > > > > > Algumas idéias: > > > > > > valt...@kraftwerk:~$ grep -o "user [a-z]* " t.txt > > > user teste > > > user teste > > > > > > > > > valt...@kraftwerk:~$ grep -o \".*\" arquivo_x.txt > > > "TESTE DE ARQUIVO.txt" > > > "teste.txt" > > > > > > T+ > > > > > > Valtoir > > > > > > 2009/5/18 Luciano Estevam Rangel > > > <lran...@scopus.com.br<lrangel%40scopus.com.br><mailto: > lrangel%40scopus.com.br <lrangel%2540scopus.com.br>> <lrangel% > 40scopus.com.br><mailto: > > lrangel%40scopus.com.br <lrangel%2540scopus.com.br>> > > > > > > > >> > > >> > > >> Boa tarde, > > >> > > >> Estou desenvolvendo um script e existe um problema no qual eu nao > > consigo > > >> achar uma resolução. > > >> > > >> Temos o arquivo x com o seguinte conteúdo > > >> valt...@kraftwerk:~$ grep -o \".*\" t.txt > > >> "TESTE DE ARQUIVO.txt" > > >> "teste.txt" > > >> > > >> > > >> May 09 13:23 DENY user teste filename="TESTE DE ARQUIVO.txt" > > >> > > >> May 09 13:45 ACCEPT user teste cod 1234 filename="teste.txt" > > >> > > >> Meu problema e o seguinte > > >> > > >> Preciso crier um arquivo cujo o conteudo seja apenas o nome do user e > o > > >> arquivo, porem eles então em posição diferentes em cada linha, e o > outro > > >> problema e que o arquivo contem espaço então quando faço um awk ele so > > me > > >> retorna no exemplo do nome do arquivo "TESTE e não o nome completo, > > exemplo > > >> "TESTE DE ARQUIVO.txt" já quebrei a cabeça aqui com while e tudo mais > > >> ...Alguem poderia me dar uma luz de como pegar somente estes dois > > campos? > > >> > > >> Obrigado > > >> > > >> Luciano > > >> > > >> [As partes desta mensagem que não continham texto foram removidas] > > >> > > >> > > >> > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]