[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]
- AJuda com a formatação do printf quando com palavras que possuam acento., Lawrence Waclawiak, 2010/04/19
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Lawrence Waclawiak, 2010/04/19
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Bruno Gunter, 2010/04/19
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Lawrence Waclawiak, 2010/04/19
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Lawrence Waclawiak, 2010/04/19
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Julio C. Neves, 2010/04/19
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Lawrence Waclawiak, 2010/04/20
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento.,
Ederson Almeida <=
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Lawrence Waclawiak, 2010/04/22
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Anderson Duarte, 2010/04/19
- Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento., Lawrence Waclawiak, 2010/04/20