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 <[email protected]> escreveu: De: Lawrence Waclawiak <[email protected]> Assunto: Re: [shell-script] AJuda com a formatação do printf quando com palavras que possuam acento. Para: [email protected] 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 - [email protected] > <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 > <[email protected] <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 > > >> <[email protected] <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 > > >>>> > > >>>> [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 > > >>>> > > >>>> > > >>>> > > >>> > > >>> > > >>> ------------------------------------ > > >>> > > >>> ---------------------------------------------------------- > > >>> 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: [email protected] > <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 > > >> [email protected] <mailto:gunter%40infolink.com.br> > <mailto:gunter%40infolink.com.br<gunter%2540infolink.com.br> > > > > > >> <[email protected] <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: [email protected] > <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: [email protected] > <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: [email protected] --------------------------------------------------------------------- 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]
