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

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

Re: [shell-script] Duvido sed


From: Valtoir
Subject: Re: [shell-script] Duvido sed
Date: Sat, 20 Mar 2004 13:18:22 -0300
User-agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.6) Gecko/20040113

Leandro Costa escreveu:

Bom dia PessoALLo,

Estou fazendo um programinha e cai no seguinte problema

dados.txt
0001|1|Michel
Sabino|0118p|00:60:B0:C3:85:D9|10.1.0.1|a|b|c|cnama1|cname2|cna
me3
0002|2|Luciano
Ferreira|0112p|00:60:B0:C3:A5:7A|10.1.0.2|20/3/2004|b|c|cname1|cname2|cname3

pedaco do codigo onde pego a linha e transformo ela em #1, $2, $3....

# obs.: a primeira linha é apagada porque são os nomes dos campos
sed 1d $BANCO | while read LINHA; do       # cada linha do banco em $LINHA
    set - $LINHA                            # guarda dados em $1, $2, $3...
    echo -e $1,$2,$3,$4,$5
    echo -e $6,$7,$8,$9,$10
    echo -e $11,$12
    echo -e ""

olha o resultado :
0001,1,MichelSantos,0118p,00:60:B0:C3:85:D9
10.1.0.1,a,b,c,00010
00011,00012

0002,2,Luciano Ferreira,0112p,00:60:B0:C3:A5:7A
10.1.0.2,20/3/2004,b,c,00020
00021,00022

vc sabe dizer pq aparece o numero 00010,00011, 0012 e nao : cname1, cname2,
cname3



grato
Leandro




---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos
Para visitar o site do seu grupo, acesse:
http://br.groups.yahoo.com/group/shell-script/

Para sair deste grupo, envie um e-mail para:
address@hidden

O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


não sei qual a diferença em termos de desempenho, mas eu faria assim:

mkdir dir_lixo
cd dir_lixo
split -a4 -l1 ../$1
for i in `ls x*`; do
 cat $i | cut -d\| -s --output-delimiter=, -f1,2,3,4,5
 cat $i | cut -d\| -s --output-delimiter=, -f6,7,8,9,10
 cat $i | cut -d\| -s --output-delimiter=, -f11,12
 echo ""
done
cd ..
rm -rf dir_lixo

O parâmetro -a do split vai depender da quantidade de registros (1 para unidades, 2 para dezenas, 3 para centenas, etc), no caso do exemplo, para até 9.999 registros.

T+

PS: usei o split pq apanho do sed prá caramba :'-(

Valtoir



reply via email to

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