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