[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] JUSTIFICAR
From: |
jimmy |
Subject: |
Re: [shell-script] JUSTIFICAR |
Date: |
Fri, 11 Nov 2011 18:04:36 -0200 |
User-agent: |
mutt-ng/devel-r804 (Linux) |
Saudações Willian,
On Fri, Nov 11, 2011 at 05:45:54PM -0000, williamalves1975br wrote:
> Depois de um tempo, recorro a lista pedindo ajuda.
>
> Tenho um testo que preciso justificar, fiz vários testes com o printf, mas não
> foi satisfatório.
>
> cat arquivo_texto.txt | while read LIN; do
> printf "%1s%12s%1s%1s%1s%1s%1s%1s%1s%1s%1s\n" $LIN
> done
>
> A percepção para um bom resultado é frustada na primeira coluna com tamanho
> diferente de texto, como abaixo:
>
> TEXTO-01 |28530|9|1|1|OK
> TEXTO-022 |28491|9|1|1|OK
> TEXTO-033 |28511|9|1|1|OK
> TEXTO-04 |28277||||
> TEXTO-04 |28324||||
> TEXTO-04 |28351||||
> TEXTO-04 |28375|||| > TEXTO-04 |28395|9|5|5|OK
> TEXTO-0555| |28190||||
> TEXTO-0555| |28199||||
> TEXTO-0555| |28208||||
> TEXTO-0555| |28217||||
> TEXTO-0555| |28230||||
> TEXTO-0555| |28250|9|6|6|OK
>
> Talvez seja simples
>
> Alguém conhece uma forma simples e elegante para justificar um texto conforme
> o
> exemplo abaixo:
>
> [texto original]
> TEXTO-01| 28530|9|1|1|OK
> TEXTO-022| 28491|9|1|1|OK
> TEXTO-033| 28511|9|1|1|OK
> TEXTO-04| 28277||||
> TEXTO-04| 28324||||
> TEXTO-04| 28351||||
> TEXTO-04| 28375||||
> TEXTO-04| 28395|9|5|5|OK
> TEXTO-0555| 28190||||
> TEXTO-0555| 28199||||
> TEXTO-0555| 28208||||
> TEXTO-0555| 28217||||
> TEXTO-0555| 28230||||
> TEXTO-0555| 28250|9|6|6|OK
>
> Desde já agradeço a todos.
Entendi que o que você define por justificar é aplicar um comprimento
fixo a uma ou várias colunas. Se de fato for esta a definição, seu
código não funciona por assumir que o printf consegue compreender
sozinho que há um registro é que ele é composto de campos separados por
pipe, da forma como está, o printf "enxerga" apenas 1 argumento.
Um exemplo bem simplista reescrito a partir do seu código poderia ser:
while read LIN; do
printf "%10s|%5s|%1s|%1s|%1s|%2s|\n" \
$(tr '|' ' ' <<<"$LIN")
done < arquivo_texto.txt
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com
- JUSTIFICAR, williamalves1975br, 2011/11/11
- Re: JUSTIFICAR, williamalves1975br, 2011/11/11
- Re: [shell-script] JUSTIFICAR,
jimmy <=