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

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

Re: [shell-script] AJuda com a formatação do printf quando com palavras


From: Ederson Almeida
Subject: Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento.
Date: Thu, 22 Apr 2010 07:32:13 -0700 (PDT)

OK! To brigando aqui para achar uma solução, agora lhe pergunto, o que 
interfere você trocar o espaçamento fixo definido em -10 por um TAB(ou o que 
imagino o \t fazer)?

"%-10s%-10s\n" A B;printf "%-10s%-10s\n" Á B
A----------B         
Á---------B   

printf "%s\t\t%s\n" A B;printf "%s\t\t%s\n" Á B
A        B
Á        B

Att,

Ederson Dantas de Almeida.

--- Em ter, 20/4/10, Lawrence Waclawiak <address@hidden> escreveu:

De: Lawrence Waclawiak <address@hidden>
Assunto: Re: [shell-script] AJuda com a formatação do printf quando com 
palavras que possuam acento.
Para: address@hidden
Data: Terça-feira, 20 de Abril de 2010, 14:25

Fala Mestre Júlio!

Então Júlio, na verdade eu tava bem contente com a solução que arrumei 
para o trunk, vc viu o programa então lembra que o que eu precisava era 
pegar várias variáveis que possuem informações a cerca de usuários e 
imprimir em forma de uma lista com 7 colunas.
Eu já tinha lido a pagina 225 e vi que com o printf da pra fazer o trunk 
usando %."Num"s, porém eu não consegui juntar esse trunk com a 
formatação da tabulação usando %-"Num"s com o complicante que minha 
tabulação tem de ser relativa ao numero de colunas capturado pelo tput, 
então fiz separado, a tabulação direto pelo printf e usei expansão de 
variáveis para truncar a variável em si.
O resultado que obtive foi excelente, deu certinho, mesmo que deixe a 
tela minúscula ele mantem o alinhamento das colunas e trunca o conteúdo 
delas.
Veja como ficou:

COLUNAS=`tput cols`

TAB=$(($COLUNAS / 7))

printf 
"%-"$TAB"s%-"$TAB"s%-"$TAB"s%-"$TAB"s%-"$TAB"s%-"$TAB"s%-"$TAB"s\n" 
"${USER:0:$[$TAB - 3]}" "${NOMECOMPLETO:0:$[$TAB - 3]}" 
"${GRUPO:0:$[$TAB - 3]}" "${STATUS:0:$[$TAB - 3]}" "${LPROFILE:0:$[$TAB 
- 3]}" "${LHOME:0:$[$TAB - 3]}" "${LASTMOD:0:$[$TAB - 3]}"

Mas isso é problema passado, o meu problema é relativo á acentuação, me 
parece que o printf não gosta muito dela e é bem simples para vc ver o 
que eu to falando sem ter de usar esse monte de comandos ai, basta abrir 
o bash e colar o comando:
printf "%-10s%-10s\n" A B;printf "%-10s%-10s\n" Á B
A----------B
Á---------B

Obs:Eu substitui os espaços em branco por "-" pois nossa lista de e-mail 
remove os espaços em branco duplicados.
O que vc pode ver é que quando usei A e B sem acentos foi respeitado o 
espaçamento de 10 casas entre elas, porém quando acentuei o Á passei a 
ter apenas 9 casas entre Á e B na saída, esse que é meu problema e para 
cada letra acentuada impressa o printf come uma casa, veja esse outro 
exemplo mais drástico:

printf "%-10s%-10s\n" AAAAAA BBBBBB;printf "%-10s%-10s\n" ÁÁÁÁAA BBBBBB
AAAAAA----BBBBBB
ÁÁÁÁAABBBBBB
Nesse exemplo usei 4 Á e dessa forma o printf comeu 4 casa e colou os 
AAs nos BBs

E ai, pra essa eu não achei resposta no livro, se bem que tbm não deu 
pra ler tudo ainda mas por consulta não achei.

Help-me??

Julio C. Neves escreveu:
>
> Fala Law,
> eu te pedi para ler a seção correspondente ao printf e, pelo visto, vc não
> leu e, por isso, está montando um Frankstein. Vou ser mais específico, mas
> não vou te dar a resposta: leia pelo menos a página 225 que vc verá como
> truncar.
>
> Abraços,
> Julio
> Cursos de Shell e Zenity em 2 fins de semana?
> - Aracaju turma de Shell em 12/05 - address@hidden 
> <mailto:andersonrizada%40gmail.com>;
> - RJ turma de Shell em 14/06 - ligue (21)2210-6061;
> - Turmas fechadas em outras cidades ligue (21) 8112-9988.
>
> Em 19 de abril de 2010 18:52, Lawrence Waclawiak
> <address@hidden <mailto:lawrencebbw%40yahoo.com.br>>escreveu:
>
> > O problema de trucar eu já resolvi utilizando expansão de variáveis da
> > seguinte forma:
> >
> > TAB=23;printf "%-$[TAB]s%-$[TAB]s\n" "${NOMECOMPLETO:0:$[$TAB - 1]}"
> > "${GRUPO:0:$[$TAB - 1]}"
> > Dessa forma a saida sempre é truncada com o tamanho da TAB - 1
> >
> > Mas persiste o problema principal referente à acentuação.
> >
> > ALguém tem mais alguma idéia ?
> >
> >
> >
> > Lawrence Waclawiak escreveu:
> > > Opa.
> > > Seguinte, o liguagem está em en_US.UTF-8
> > > troquei a liguagem no script para pt_BR.UTF-8 mas não adiantou nada.
> > > Você chegou a testar ai no seu pc se o desalinhamento ocorre?
> > >
> > >
> > > Bruno Gunter escreveu:
> > >
> > >> Que tal usar UTF-8?
> > >> Deve resolver teu problema.
> > >>
> > >> Para confirmar se você está usando o UTF-8, faça:
> > >>
> > >> set | grep UTF
> > >>
> > >> Que deve retornar algo como:
> > >> GDM_LANG=pt_BR.UTF-8
> > >> LANG=pt_BR.UTF-8
> > >>
> > >> []'s
> > >> Gunter
> > >>
> > >> Em 19 de abril de 2010 17:36, Lawrence Waclawiak
> > >> <address@hidden <mailto:lawrencebbw%40yahoo.com.br> 
> <mailto:lawrencebbw%40yahoo.com.br<lawrencebbw%2540yahoo.com.br>
> > >>escreveu:
> > >>
> > >>
> > >>> Galera, vi que aki parece alinhado, deve ser alguma coisa do 
> e-mail mas
> > >>> não fica alinhado no bash.
> > >>> Tem de jogar o comando no Bash pra ver.
> > >>>
> > >>> Lawrence Waclawiak escreveu:
> > >>>
> > >>>> 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
> > >>>>
> > >>>> [root@ProxyP15 samba]# TAB=23;printf "%-$[TAB]s%-$[TAB]s\n" 
> "ÁÁAAAA"
> > >>>> "BBBB"; printf "%-$[TAB]s%-$[TAB]s\n" "AAAAAA" "BBBB"
> > >>>> ÁÁÁAAA BBBB
> > >>>> AAAAAA BBBB
> > >>>> [root@ProxyP15 samba]# TAB=23;printf "%-$[TAB]s%-$[TAB]s\n" 
> "ÁAAAAA"
> > >>>> "BBBB"; printf "%-$[TAB]s%-$[TAB]s\n" "AAAAAA" "BBBB"
> > >>>> ÁAAAAA BBBB
> > >>>> AAAAAA BBBB
> > >>>> [root@ProxyP15 samba]# TAB=23;printf "%-$[TAB]s%-$[TAB]s\n" 
> "AAAAAA"
> > >>>> "BBBB"; printf "%-$[TAB]s%-$[TAB]s\n" "AAAAAA" "BBBB"
> > >>>> AAAAAA BBBB
> > >>>> AAAAAA BBBB
> > >>>> [root@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
> > >>>>
> > >>>>
> > >>>>
> > >>>
> > >>>
> > >>> ------------------------------------
> > >>>
> > >>> ----------------------------------------------------------
> > >>> Esta lista não admite a abordagem de outras liguagens de
> > >>>
> > >> programação, como
> > >>
> > >>> perl, C etc. Quem insistir em não seguir esta regra será moderado
> > >>>
> > >> sem prévio
> > >>
> > >>> aviso.
> > >>> ----------------------------------------------------------
> > >>> Sair da lista: address@hidden 
> <mailto:shell-script-unsubscribe%40yahoogrupos.com.br>
> > >>>
> > >> 
> <mailto:shell-script-unsubscribe%40yahoogrupos.com.br<shell-script-unsubscribe%2540yahoogrupos.com.br>
> > >
> > >>
> > >>> ----------------------------------------------------------
> > >>> Esta lista é moderada de acordo com o previsto em
> > >>> http://www.listas-discussao.cjb.net 
> <http://www.listas-discussao.cjb.net>
> > >>>
> > >> <http://www.listas-discussao.cjb.net 
> <http://www.listas-discussao.cjb.net>>
> > >>
> > >>> ----------------------------------------------------------
> > >>> Servidor Newsgroup da lista: news.gmane.org
> > >>> Grupo: gmane.org.user-groups.programming.shell.brazil
> > >>>
> > >>> Links do Yahoo! Grupos
> > >>>
> > >>>
> > >>> [image: InfoLink - Hospedagem de Sites]
> > >>>
> > >> *Bruno Gunter*
> > >> Equipe InfoLink Hospedagem
> > >> address@hidden <mailto:gunter%40infolink.com.br> 
> <mailto:gunter%40infolink.com.br<gunter%2540infolink.com.br>
> > >
> > >> <address@hidden <mailto:gunter%40infolink.com.br> 
> <mailto:gunter%40infolink.com.br<gunter%2540infolink.com.br>
> > >>
> > >> www.infolink.com.br
> > >> Tel.: 2104-1932
> > >>
> > >> [As partes desta mensagem que não continham texto foram removidas]
> > >>
> > >>
> > >>
> > >
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > > ----------------------------------------------------------
> > > Esta lista não admite a abordagem de outras liguagens de programação,
> > como perl, C etc. Quem insistir em não seguir esta regra será 
> moderado sem
> > prévio aviso.
> > > ----------------------------------------------------------
> > > Sair da lista: address@hidden 
> <mailto:shell-script-unsubscribe%40yahoogrupos.com.br>
> > > ----------------------------------------------------------
> > > Esta lista é moderada de acordo com o previsto em
> > http://www.listas-discussao.cjb.net 
> <http://www.listas-discussao.cjb.net>
> > > ----------------------------------------------------------
> > > Servidor Newsgroup da lista: news.gmane.org
> > > Grupo: gmane.org.user-groups.programming.shell.brazil
> > >
> > > Links do Yahoo! Grupos
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> > ------------------------------------
> >
> > ----------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de 
> programação, como
> > perl, C etc. Quem insistir em não seguir esta regra será moderado 
> sem prévio
> > aviso.
> > ----------------------------------------------------------
> > Sair da lista: address@hidden 
> <mailto:shell-script-unsubscribe%40yahoogrupos.com.br>
> > ----------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> > http://www.listas-discussao.cjb.net 
> <http://www.listas-discussao.cjb.net>
> > ----------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> > Links do Yahoo! Grupos
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 



------------------------------------

---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

Links do Yahoo! Grupos





      

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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