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

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

Re: [shell-script] Formatar Campos respeitando limite


From: Fabiano Caixeta Duarte
Subject: Re: [shell-script] Formatar Campos respeitando limite
Date: Wed, 8 Apr 2009 19:06:12 -0300

2009/4/8 Rodrigo Vian <address@hidden>:
> Boa tarde Lista,
> Andei pesquisando e quebrando a cabeça mas não encontrei nada.
>
> A minha situação é a seguinte:
>
> Seleciono dados de uma base de dados mysql (até ai tudo tranquilo,
> inclusive já sai formatado em CSV pra importação no excel). Porém para
> um outro programa do meu cliente que devo enviar esses dados eu tenho
> que iniciar os campos em uma coluna exata, pois o programa identifica
> por posição.
>
> Segue alguns detalhes dos dados em csv:
> "2009-04-05 19:22:59","11111111","SRV/1","2222","SRV/23","10"
> "2009-04-05 19:22:59","333311111111","SRV/11","44442222","FTP/1","100"
> "2009-04-05 19:22:59","1234567","SRV/1","2222","SERVIDOR/1-0000548","62"
> "2009-04-05 19:22:59","11111111","MAIL/2-5487","2222","SRV/23","9"
> --------------
> Quero formatar a saida para que o dado do referido campo sempre saia com
> inicio na coluna que eu especifcar.
> Exemplo:
> campo 1: coluna 1
> campo 2: coluna 21
> campo 3: coluna 41
> campo 4: coluna 65
> campo 5: coluna 75
> campo 6: coluna 100
>
> OBS: Sem usar o TAB..
>
> É POSSÍVEL.
>
> Desde já agradeço!
>
> Att.
>
>
>
> Rodrigo S. Vian
> Analista TI
> Porttal Tecnologia
> Soluções em TI & Telecom
> http://www.porttaltecnologia.com.br
> phone:55+19+3542-9667
> mobile:55+19+7808-5121
> nextel:55*89*25546


Eu usaria o printf. Ele permite que se diga quantos caracteres uma
string deve ocupar.

(
IFS=,
while read a b c d e f; do
  printf "%-20s%-20s%-20s%-15s%-10s%-25s\n" $a $b $c $d $e $f
done < <(tr -d '"' < arquivo)
)

O detalhe é que a string SERVIDOR/1-0000548 não cabe em 10 espaços ;)

-- 
Fabiano Caixeta Duarte
Especialista em Redes de Computadores
Linux User #195299
Ribeirão Preto - SP


reply via email to

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