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

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

Re: [shell-script] Processar Arquivo linha por linha ... Versão 3


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Processar Arquivo linha por linha ... Versão 3
Date: Thu, 27 Sep 2007 11:06:29 -0300

Caro $( whoami )

o seu script pode ser modificado para receber multiplos ids e escrever o
resultado linha a linha?

ex:

$ cat arquivo
id1|nome1|sobrenome1
id2|nome2|sobrenome2
id3|nome3|sobrenome3

$ cut -d\| -f1 arquivo
id1
id2
id3

se vc puder fazer

$ ./calcula id1 id2 id3
valor_calculado_para_id1
valor_calculado_para_id2
valor_calculado_para_id3

bastaria vc fazer

$ cut -d\| -f1 arquivo | xargs ./script

e ai, poderia fazer um paste:

$ paste -d \| <($ cut -d\| -f1 arquivo) <($ cut -d\| -f1 arquivo | xargs
./script) <(cut -d\| -f2- arquivo) > final

ou poderia recorrer ao awk

$ cut -d\| -f1 arquivo | xargs ./script > calculado

$ paste -d \| calculado arquivo | awk -F "|"  -v OFS="|" '{print
$2,$1,$3,$4}'

Agora se o seu arquivo fizer

$ ./calcula id1 id2 id3
id1|valor_calculado_para_id1
id2|valor_calculado_para_id2
id3|valor_calculado_para_id3

perceba que fica muito mais simples o paste

$ paste -d \| <($ cut -d\| -f1 arquivo | xargs ./script) <(cut -d\| -f2-
arquivo) > final

ou

$ cut -d\| -f1 arquivo | xargs ./script > um
$ cut -d\| -f2- arquivo > dois
$ paste -d \| um dois > final     # :)

Bom, e se o seu script não pode ser alterado?

$ cut -d\| -f1 arquivo | xargs -n 1 ./script

terá o mesmo efeito. Só que a performance sera bem mais baixa (pode sentir
com 7 mil linhas, mas podem ser só alguns minutos)

O ideal é que vc pudesse passar a linha toda para o seu script e ele se
'virasse' pra calcular :)

[]´s Tiago

On 9/27/07, isampbr <address@hidden> wrote:
>
> Olá pessoal !
>
> Sendo arquivo.txt com 7000 linhas no seguinte padrão:
> (id|nome|sobrenome)
>
> 123456|abcd|xyzt
>
> preciso gerar a seguinte saida:
>
> 123456|dso#ij83%9!87==|abcd|xyzt
>
> sendo que "dso#ij83%9!87==" é um calculo executado por outro script.
>
> estou tentando resolver com dicas que os colegas me passaram
> a algum tempo, mas o resultado não esta legal (aliás, sem resultados).
>
> a linha que estou tentando usar é:
>
> awk -F\| '{print $1"|" system("./calcula.sh",$1) "|"$2"|"$3}' arquivo.txt
>
> Onde estou errando ?
>
> 
>



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/


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



reply via email to

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