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

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

Re: [shell-script] AWK para separar linhas e campos


From: Marcelo Salhab Brogliato
Subject: Re: [shell-script] AWK para separar linhas e campos
Date: Sun, 11 Nov 2007 21:01:44 -0200

Olá Tiago,

rsrs eu tinha feito... vou ate postar minha solucao...
ficou gigante!!! estou impressionado como algumas linhas do sed fizeram todo
o
"trabalho sujo".. hehe

preciso realmente melhorar MUITO nessas ferramentas..
alguma sugestao? :)

abraços,
Salhab


On Nov 11, 2007 2:04 PM, Tiago Barcellos Peczenyj <address@hidden>
wrote:

>   Awk pode ser interessante, mas o sed é mais indicado nesse ponto pois
> é uma simples manipulação de texto :)
>
> $ sed -r 's/^/\^/;s/\^([^:]+):([^^]+)/,
> \1="\2"/g;s/^,/INSERT...(/;s/$/);/' arquivo
>
> INSERT...( nome="Joao da Silva", sexo="Masculino", idade="48");
> INSERT...( nome="Carlos", email="address@hidden <carlos%40teste.com>",
> Observacoes="
> hehehe::lala:");
>
> Vejamos como eu cheguei ai:
>
> $ sed -r 's/^/\^/' data.dat # coloco um ^ informando que começou um novo
> campo
> ^nome:Joao da Silva^sexo:Masculino^idade:48
>
> ^nome:Carlos^email:address@hidden <carlos%40teste.com>^Observacoes:
> hehehe::lala:
>
> $ sed -r 's/^/\^/;s/\^([^:]+):([^^]+)/@ \1->\2/g' data.dat # agora eu
> separo as informações
> @ nome->Joao da Silva@ sexo->Masculino@ idade->48
> @ nome->Carlos@ email->address@hidden <carlos%40teste.com>@
> Observacoes-> hehehe::lala:
>
> $ sed -r 's/^/\^/;s/\^([^:]+):([^^]+)/, \1="\2"/g' data.dat # ta certo
> ? então eu deixo parecido com o insert SQL
> , nome="Joao da Silva", sexo="Masculino", idade="48"
> , nome="Carlos", email="address@hidden <carlos%40teste.com>",
> Observacoes=" hehehe::lala:"
>
> $ sed -r 's/^/\^/;s/\^([^:]+):([^^]+)/, \1="\2"/g;s/^,/INSERT...(/;'
> data.dat # colocamos o INSERT na frente
> INSERT...( nome="Joao da Silva", sexo="Masculino", idade="48"
> INSERT...( nome="Carlos", email="address@hidden <carlos%40teste.com>",
> Observacoes=" hehehe::lala:"
>
> Agora basta terminar as linhas ;-)
>
>
> On Nov 9, 2007 7:32 PM, Marcelo Salhab Brogliato 
> <address@hidden<msbrogli%40gmail.com>>
> wrote:
> >
> > Olá,
> >
> > tenho entradas do tipo:
> > nome:Joao da Silva^sexo:Masculino^idade:48
> > nome:Carlos^email:address@hidden <carlos%40teste.com>^Observacoes:
> hehehe::lala:
> >
> > e assim vai...
> > preciso montar SQL para inserir em um banco de dados...
> > em cada linhas, tenho os campos separados por ^, e os campos sao assim:
> > ([^:]+)(.*) ... $1 é campo, $2 é o valor...
> >
> > estou fazendo o seguinte:
> >
> > TMP=$IFS
> > IFS=`echo " " | tr " " "\n"`
> > for entry in $contacts;
> > do
> > echo $entry | awk 'BEGIN { FS="^" } { for (i=1; i<=NF; i++) { $i ~
> > /([^:])(.*)/ { print $1, "::", $2 } } }'
> > done
> > IFS=$TMP
> >
> > mas nao consigo nada alem de mensagens de erro :)
> >
> > alguem tem alguma sugestao?
> >
> > abracos,
> > Salhab
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> http://peczenyj.blogspot.com/
> "what does not kill us makes us stronger"
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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