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

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

Re: [shell-script] Arquivo com espaço e posição diferente


From: Valtoir Jardim
Subject: Re: [shell-script] Arquivo com espaço e posição diferente
Date: Tue, 19 May 2009 11:36:32 -0300

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

>
>
> 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 != ${#nomes[@]} ]
> 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 != ${#nomes[@]} ]
> 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 != ${#nomes[@]} ]
> 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?
>
> valtoir@kraftwerk:~$ grep -o "name=\".*\"" t.txt | sed 's/name=//'
> "TESTE DE ARQUIVO.txt"
> "teste.txt"
>
> Valtoir
>
> 2009/5/18 Luciano Estevam Rangel 
> <address@hidden<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 <address@hidden<valtoirjardim%40gmail.com><mailto:
> valtoirjardim%40gmail.com <valtoirjardim%2540gmail.com>> <valtoirjardim%
> 40gmail.com><mailto:
> > valtoirjardim%40gmail.com <valtoirjardim%2540gmail.com>> >
> >
> > > Algumas idéias:
> > >
> > > valtoir@kraftwerk:~$ grep -o "user [a-z]* " t.txt
> > > user teste
> > > user teste
> > >
> > >
> > > valtoir@kraftwerk:~$ grep -o \".*\" arquivo_x.txt
> > > "TESTE DE ARQUIVO.txt"
> > > "teste.txt"
> > >
> > > T+
> > >
> > > Valtoir
> > >
> > > 2009/5/18 Luciano Estevam Rangel 
> > > <address@hidden<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
> > >> valtoir@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]



reply via email to

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