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

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

Re: [shell-script] Preenchimento com espaços a esquerda


From: Paulo Bettega
Subject: Re: [shell-script] Preenchimento com espaços a esquerda
Date: Fri, 7 Aug 2015 14:41:54 -0300
User-agent: Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Thunderbird/38.1.0

O alinhamento do printf inclui a string.
"printf '%10s' 123" vai imprimir sete espaços mais os três da string.

Mas essa com caracteres multibyte :)
printf '%20s\n' 'Alo,Mundo!'
          Alo,Mundo!
printf '%20s\n' 'Alô,Mundo!'
         Alô,Mundo!

o printf do awk imprime direito
awk '{printf "%20s\n", $0}' <<<'Alo,Mundo!'
          Alo,Mundo!
awk '{printf "%20s\n", $0}' <<<'Alô,Mundo!'
          Alô,Mundo!

Abraços Paulo Bettega

ps- isso no bash 4.3.30(1)-release


On 07-08-2015 14:23, address@hidden [shell-script] wrote:

Corrigindo.
Continua com numero de espaço em branco errado:
8, 16 e 8
ao invés de 10, 20 e 15 que seria o correto.

Diramos

De: address@hidden
Enviada: Sexta-feira, 7 de Agosto de 2015 14:19
Para: address@hidden
Assunto: [shell-script] Preenchimento com espaços a esquerda

Continua com numero de espaço em branco. Veja:

#!/bin/bash

IFS="\;" var="123;teste;cachorro"; echo "$var" | (read c1 c2 c3;printf 
"%10s%20s%15s\n" $c1 $c2 $c3)

123 teste cachorro

De: address@hidden

Enviada: Sexta-feira, 7 de Agosto de 2015 14:03

Para: address@hidden

Assunto: [shell-script] Preenchimento com espaços a esquerda

$c1 $c2 e $c3 ficaram no subshell do pipe. Teria que imprimir as

variáveis dentro daquele subshell

IFS="\;" var="123;teste;cachorro"; echo "$var" | (read c1 c2 c3;printf 
"%10s%20s%15s\n" $c1 $c2 $c3)

$var tem que estar entre aspas, senão o valor muda

IFS="\;" var="123;teste;cachorro"; echo "$var"

123;teste;cachorro

IFS="\;" var="123;teste;cachorro"; echo $var

123 teste cachorro

Abraços Paulo Bettega

On 07-08-2015 13:07, address@hidden [shell-script] wrote:

 >

 > Em TEMPO:

 >

 > Se eu faço assim:

 >

 > #!/bin/bash

 > IFS="\;"

 > var="123;teste;cachorro"

 > echo $var | read c1 c2 c3

 > printf "%10s%20s%15s\n" $c1 $c2 $c3

 >

 > Não dá erro, mas o retorno é vazio.

 >

 > Grato

 >

 > Diramos

 >

 > De: address@hidden

 > Enviada: Sexta-feira, 7 de Agosto de 2015 13:02

 > Para: address@hidden

 > Assunto: [shell-script] Preenchimento com espaços a esquerda

 >

 >

 > Pessoal,

 >

 > Aproveitando o post:

 >

 > Aqui Linux, Debian 7.

 >

 > # echo $SHELL

 > /bin/bash

 >

 > # echo $TERM

 > xterm

 >

 > Aí eu faço assim:

 >

 > #!/bin/bash

 > IFS="\;"

 > var="123;teste;cachorro"

 > echo $var | read c1 c2 c3

 > printf "%10s%20s%15s\n" $var

 >

 > Resultado:

 >

 > 123 teste cachorro

 >

 > Ou seja:

 >

 > (8 espaços em branco)123

 > (16 espaços em branco)teste

 > (8 espaços em branco)cachorro

 >

 > Porque?!?!?

 >

 > Outra dúvida: como usar os comandos citados para ler o conteúdo de um 
arquivo e não uma variável?

 >

 > Diramos

 >

 > De: address@hidden

 >

 > Enviada: Sexta-feira, 7 de Agosto de 2015 15:04

 >

 > Para: address@hidden

 >

 > Assunto: [shell-script] Preenchimento com espaços a esquerda

 >

 >

 >

 > $> echo $SHELL/usr/bin/sh

 >

 > Em Sexta-feira, 7 de Agosto de 2015 11:57, "Tiago Peczenyj address@hidden 
[shell-script]"

 > escreveu:

 >

 >

 >

 > ops. era o $SHELL

 >

 > 2015-08-07 16:55 GMT+02:00 Leandro Valiengo address@hidden [shell-script] :

 >

 >

 >

 > Fala Thiago,

 >

 > é o xterm

 >

 > Em Sexta-feira, 7 de Agosto de 2015 11:51, "Tiago Peczenyj address@hidden 
[shell-script]"

 > escreveu:

 >

 >

 >

 > ok... começa a fazer sentido, mas vc deveria descobrir qual o shell corrente.

 >

 > talvez

 >

 > $ echo $TERM

 >

 > mas não sei se isso é padrão

 >

 > 2015-08-07 16:49 GMT+02:00 Leandro Valiengo address@hidden [shell-script] :

 >

 >

 >

 > fala pessoal,

 >

 > quando digito uname -a, vejam:

 >

 > $> uname -aHP-UX #### B.11.31 U ia64 2262551860 unlimited-user license

 >

 > Em Sexta-feira, 7 de Agosto de 2015 11:41, "Tiago Peczenyj address@hidden 
[shell-script]"

 > escreveu:

 >

 >

 >

 > Julio

 >

 > Como no ksh as variaveis "depois do pipe" voltam?

 >

 > 2015-08-07 16:38 GMT+02:00 'Julio C. Neves' address@hidden [shell-script] :

 >

 >

 >

 > Isso é um artifício do Bash que se chama Here String e que no ksh (UNIX) 
equivale a:

 >

 > IFS=\;echo "123;teste;cachorro" | read c1 c2 c3

 >

 > printf "%10s%20s%15s\n" $c1 $c2 $c3

 >

 > Isso deve funcionar.

 >

 > Abcs,Julio@juliobash

 >

 > Próximos cursos de Shell

 >

 > Cidade Local PeríodoCuritiba SoftSell 10/08 a 14/08 São Paulo 4Linux 21/09 a 
25/09 Rio de

 > Janeiro EDX 05/10 a 09/10 São Paulo 4Linux 07/12 a 11/12

 >

 > Dou treinamento de Shell em qualquer cidade.Para mais detalhes, me mande um 
e-mail.

 >

 > 2015-08-07 11:25 GMT-03:00 Leandro Valiengo address@hidden [shell-script] :

 >

 >

 >

 > oi leslie,

 >

 > é que esse atribuição < Em Sexta-feira, 7 de Agosto de 2015 11:03, "Leslie 
Watter
address@hidden [shell-script]" escreveu:

 >

 >

 >

 > Oi Leandro,

 >

 > Leandro, vc só tirou o comando que mostra como vc quer. Veja só o quote da 
resposta que o Julio já

 > tinha te mandado:

 >

 > %%%% > Fala Leandro,%%%% > já havia passado uma solução alternativa:%%%% > $ 
IFS=\; read c1 c2 c3

 > o comando que mostra as strings do jeito que vc quer é o printf. os outros 
só servem pra colocar as

 > variáveis de teste em c1 c2 e c3

 >

 > Att,

 >

 > LEslie

 >

 > On Fri, Aug 7, 2015 at 10:10 AM, Leandro Valiengo address@hidden 
[shell-script] wrote:

 >

 >

 >

 > prezados,

 >

 > bom dia.

 >

 > é unix. e vejam a linha de comando que mandaram agora, funcionou em 
partes...rs. Mas lembrem-se, no

 > original, pedi para colocar os espacos antes das colunas e nao vejo nada 
disso no comando ou na

 > resposta:

 >

 > $> echo "123;teste;cachorro" | (IFS=\; read c1 c2 c3;echo $c1 - $c2 - $c3)

 >

 > 123 - teste - cachorro

 >

 > Lembrando que preciso completar com espaço:

 >

 > 123 tem que ficar: ' 123' --> 10 espacosteste tem que ficar: ' teste' --> 20

 > espacoscachorro tem que ficar: ' cachorro' --> 15 espacos

 >

 > obrigado.

 >

 > Em Sexta-feira, 7 de Agosto de 2015 0:22, "'Julio C. Neves' address@hidden 
[shell-script]"

 > escreveu:

 >

 >

 >

 > Fala Leandro, que shell é esse que vc está usando? Isso é UNIX? Se for, o 
ksh não tem here strings

 > (< PBS: o ponto e vírgula após a declaração do IFS, não existe.

 >

 > Em 06/08/2015 17:03, "Leandro Valiengo address@hidden [shell-script]" 
escreveu:

 >

 >

 >

 > Prezados,

 >

 > muito obrigado pelas solucoes. Estou tentando usar do Julinho, pois ele diz 
q é a mais rapida pois é

 > shell puro.

 >

 > Julio,

 >

 > Estou recebendo um erro ao tentar reproduzir a linha de comando no prompt:

 >

 > $> IFS=\; read c1 c2 c3 << abs,

 >

 > Em Quinta-feira, 6 de Agosto de 2015 16:24, "'Julio C. Neves' address@hidden 
[shell-script]"

 > escreveu:

 >

 >

 >

 > Fala Leandro,já havia passado uma solução alternativa:$ IFS=\; read c1 c2 c3 
<

 > Só esqueci de dizer que essa solução deve ser mais rápida que a com awk, pq 
é shell puro.

 >

 > Abcs,Julio@juliobash

 >

 > Próximos cursos de Shell

 >

 > Cidade Local PeríodoCuritiba SoftSell 10/08 a 14/08 São Paulo 4Linux 21/09 a 
25/09 Rio de

 > Janeiro EDX 05/10 a 09/10 São Paulo 4Linux 07/12 a 11/12

 >

 > Dou treinamento de Shell em qualquer cidade.Para mais detalhes, me mande um 
e-mail.

 >

 > Em 6 de agosto de 2015 15:36, Leandro Valiengo address@hidden [shell-script] 
escreveu:

 >

 >

 >

 > Prezados, boa tarde.

 >

 > Tenho um arquivo separado por ';' como por exemplo:

 >

 > 123;teste;cachorro

 >

 > Minha missao é preencher com espaco da seguinte forma:

 >

 > primeira posição: Preencher com espacos até a posicao total ser 10segunda 
posição: Preencher com

 > espacos até a posicao total ser 20 terceira posição: Preencher com espacos 
até a posicao total ser 15

 >

 > Qual o comando com awk para realizar esse trabalho?

 >

 > abs,

 >

 > --

 >

 > Leslie H. Watter

 >

 > --

 >

 > Tiago B. Peczenyj

 >

 > http://about.me/peczenyj

 >

 > --

 >

 > Tiago B. Peczenyj

 >

 > http://about.me/peczenyj

 >

 > --

 >

 > Tiago B. Peczenyj

 >

 > http://about.me/peczenyj

 >

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

 >

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

 >

 >

 > ----------------------------------------------------------

 > Enviado por: address@hidden

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

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

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

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

Para visitar o site do seu grupo na web, acesse:

http://br.groups.yahoo.com/group/shell-script/

Para sair deste grupo, envie um e-mail para:

address@hidden

O uso que você faz do Yahoo Grupos está sujeito aos:

https://info.yahoo.com/legal/br/yahoo/utos/terms/

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


----------------------------------------------------------------------------------------------------
Enviado por: address@hidden


reply via email to

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