E ai galera? na Paz?
Venho pedir a ajuda dos caros colegas com relação ao comando printf.

No meu trabalho eu estou desenvolvendo um script para comptrolar um PDC 
em samba e para as funções de pesquisa e listagem de usuários eu utilizo 
o printf para formatar a saida, juntamente com o tput para calcular as 
colular e consegquentemente o espaçamento necessário entre elas.

O problema que estou enfrentando é que quando imprimo alguma string que 
possua acento o printf puxa a formatação uma casa para esquerda nessa 
respectiva linha para cada caracter acentuado, detonando a formatação da 
lista.

O exemplo abaixo mostra o que estou falando

[r...@proxyp15 samba]# TAB=23;printf "%-$[TAB]s%-$[TAB]s\n" "ÁÁAAAA" 
"BBBB"; printf "%-$[TAB]s%-$[TAB]s\n" "AAAAAA" "BBBB"
ÁÁÁAAA              BBBB
AAAAAA                 BBBB
[r...@proxyp15 samba]# TAB=23;printf "%-$[TAB]s%-$[TAB]s\n" "ÁAAAAA" 
"BBBB"; printf "%-$[TAB]s%-$[TAB]s\n" "AAAAAA" "BBBB"
ÁAAAAA                BBBB
AAAAAA                 BBBB
[r...@proxyp15 samba]# TAB=23;printf "%-$[TAB]s%-$[TAB]s\n" "AAAAAA" 
"BBBB"; printf "%-$[TAB]s%-$[TAB]s\n" "AAAAAA" "BBBB"
AAAAAA                 BBBB
AAAAAA                 BBBB
[r...@proxyp15 samba]#                                


Só pra constar já tentei colocar o AAAAAA sem aspas, com aspas duplas 
como está no exemplo e com aspas simples tbm, dá tudo na mesma, sai do 
alinhamento.
Não caso eu não encontre uma solução irei partir para passar o TR 
removendo os acentos de tudo, mas como se trata de Nomes preferia não 
fazer isso.
Já aproveitando a deixa se alguém souber como faço para truncar o número 
de caracteres de uma variável impressa pelo printf seria de grande ajuda 
tbm.

Grato,
Lawrence Waclawiak

Responder a