Completar variavel com caracteres espaco (

1. Completar variavel com caracteres espaco (

Tony
tony.tux

(usa Gentoo)

Enviado em 11/09/2007 - 21:46h

Pessoal, tenho uma duvida simples envolvendo shell script/sed.

Tenho uma variavel $var que sera lida do teclado e preciso que ela tenha um tamanho especifico, por exemplo 50 caracteres. O lance consiste em completar a tal $var com espacos em branco " " ate preencher os 50 caracteres, caso ela tenha menos que isso.

Posteriormente no script, o shell "interpretara" a variavel $var, entao seria de fundamaental importancia que ele reconheca de alguma forma os caracteres de espaco. Alguma ideia?

Tentei de diversas formas, mas o shell sempre arranca os espacos.

Obrigado.

Att,

Tony


  


2. Re: Completar variavel com caracteres espaco (

Leandro Santiago
tenchi

(usa Slackware)

Enviado em 11/09/2007 - 22:32h

Enviado em 11/09/2007 - 22:27h:


Especifique a quantidade de caracteres que será lido:
$ read -n2 var # leia somente duas posições

$ for i in `seq 3 50`
> do
> var="$var "
> done

È bem tosco e pouco eficiente, mas funciona.
Faça o teste

$ echo ${#var}
50

Aspas!!! Lembre-se das aspas duplas!!! hauahau
flw.



3. Re: Completar variavel com caracteres espaco (

Leandro Santiago
tenchi

(usa Slackware)

Enviado em 12/09/2007 - 13:59h

Putz, foi mal. Entendi mal a pergunta...
Você pode fazer assim:
$ TAMTOTAL=50
$ read var
$ for (( i = ${#var}; i < TAMTOTAL ; i+=1 ))
> {
> var="$var "
> }
$ echo ${#var}
50

Agora sim... Ainda tosco mas funcionando.



4. Sem laco

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 12/09/2007 - 14:05h

a=teste
a=`printf "%-10s" "$a"`

Acima: poe espacos a direita. em echo "[$a]" imprime:

[teste______]

a=`printf "%10s" "$a"`

Agora o echo "[$a]" imprime:
[______teste]

(usei underscore no lugar do espaco por causa da publicacao em html)

Uso isto DIRETO para imprimir na tela de forma formatada.



5. Re: Completar variavel com caracteres espaco (

Igor C. Batista
igorcb

(usa Debian)

Enviado em 06/10/2007 - 11:32h

e se eu quiser completar com algum outro caractere como ":"
caso seje um numero como completar com "0" zeros a esquerda


6. Re: Completar variavel com caracteres espaco (

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 06/10/2007 - 12:44h

Se for numero e zeros a esquerda, o proprio printf resolve:

a=5
teste="`printf "%010d" $a`"

Mas completar com outro car que não o espaço ou zero, ai só com a solução do for.

Veja, para esta do zeros a esquerda DA ERRO se não for numero.



7. Blz!!

Tony
tony.tux

(usa Gentoo)

Enviado em 07/10/2007 - 11:21h

Funcionando legal.
Muito obrigado!!
Vlws


8. Re: Completar variavel com caracteres espaco (

Igor C. Batista
igorcb

(usa Debian)

Enviado em 30/10/2007 - 17:20h

essa funcao printf, eh muito show, ta funcionando belezinha...
mas estou com problemas para concatenar as strings formatadas pelo o printf
Banco -> Tam 3 - 104
Conta -> Tam 10 - 156592
Agencia -> Tam 5 - 5210
caso esteje vazio a variavel tb completa com ""
ex: BANCO=`printf "%-3s" "$BANCO"`
CONTA=`printf "%-10s" "$CONTA"`
AGENCIA=`printf "%-5s" "$AGENCIA"`

concatenando as strings

echo "$BANCO$CONTA$AGENCIA"
saida errada = 10415692 5210
saida correta = 10415692 5210 .

alguem sabe como resolver?


9. So faltou as aspas

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 30/10/2007 - 17:27h

BANCO="`printf "%-3s" "$BANCO"`"
CONTA="`printf "%-10s" "$CONTA"`"
AGENCIA="`printf "%-5s" "$AGENCIA"`"







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts