On 28-06-2010, at 20h 07'38", Dan Borlovan wrote about "Re: [rlug] printf si 
UTF-8"
> 
> On 06/28/2010 07:48 PM, Ionel Mugurel Ciobica wrote:
> > Cineva cu cunostinte mai elevate de formate pentru printf, cum fac să
> > se alinieze bine chestiile astea:
> >
> > printf "%10s\n" `echo 
> > "luni\nmarți\nmiercuri\njoi\nvineri\nsîmbătă\nduminică"`
> 
> Pina una alta ce se intimpla. Caracterele tale speciale sint wide (2 
> octeti - de ex marti e mar\310\233i). printf numara octetii asa ca lui 
> fiecare caracter special i se pare ca sint doua, de aia "pierzi" cite un 
> spatiu la aliniere

Stiu despre UTF-8, ma intrebam doar cum folosesc un printf care stie
si el de UTF-8.

> 
> In C sint ceva functii care numara caracterele (wprintf) in ideea ca e 
> corect setat LANG/LC_ALL sau pe unde se uita
> 

Da, nu stiu nici C nici perl, vroiam ceva ce merege direct in bash.
Multumesc lui zgrim si Petre pentru solutiile lor. Nu am reusit sa le
adaptez. De exemplu ce devine $_ cind sint mai multe variabile si ce
ma fac daca in expresia lui -e '' trebuie sa apara variabile bash sau
comenzi, de exemplu `date +%A`. Ce vreau de fapt este să aliniez linii
de genul:

duminică  4 iulie 2010, 06:08:05 more text
    luni  5 iulie 2010, 05:16:32 more text
   marți  6 iulie 2010, 04:24:11 more text

Si problema mea era ca zilele saptaminii devineau nealiniate din cauza
ca printf nu vorbeste UTF-8.

Deci, ce pot face este sa fac conversia UTF-8 -> ISO8859-16, dupa aia
printf dupa care conversie ISO8859-16 -> UTF-8, dar mi se pare stupid.
La fel de stupid ca adauging in coada lui printf o serie de sed:

printf "%10s\n" luni marți miercuri joi vineri sîmbătă duminică | sed 's/marți/ 
&/;s/sîmbătă/   &/;s/duminică/ &/'

Pe de alta parte vad ca bash e mai destept, stie ca marti are 5 litere
(nu sase cum crede printf):

# k=marți
# echo ${#k}
5

Poate pot scrie eu o functie simpla bash care numara caracterele si
adauga spatiile necesare sa se poata alinia corect....

Mugurel
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui