[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Preenchimento com espaços a esquerda
From: |
diramos |
Subject: |
Re: [shell-script] Preenchimento com espaços a esquerda |
Date: |
Fri, 07 Aug 2015 13:17:46 -0300 |
Tiago,
Já tinha tentado colocando $c1 $c2 e $c3
Não dá erro, mas o retorno é vazio.
Porque?
Diramos
De: address@hidden
Enviada: Sexta-feira, 7 de Agosto de 2015 18:10
Para: address@hidden
Assunto: [shell-script] Preenchimento com espaços a esquerda
vamos la
vc tem muitas duvidas mas isso
#!/bin/bash
IFS="\;"
var="123;teste;cachorro"
echo $var | read c1 c2 c3
printf "%10s%20s%15s\n" $var
vc esta usando $var ao inves de $c1 $c2 $c3, então a linha com read é inutil
então vc esta esperando que $var seja interpretado na linha de comando,
se vc quer ler um arquivo vc pode fazer
while read linha ; do echo $linha # aqui vc tem uma linha por
vez, use com sabedoria.done < arquivo.txt
2015-08-07 18:02 GMT+02:00 address@hidden [shell-script] <address@hidden>:
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]
<address@hidden>:
Fala Thiago,
é o xterm
Em Sexta-feira, 7 de Agosto de 2015 11:51, "Tiago Peczenyj address@hidden
[shell-script]" <address@hidden> 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]
<address@hidden>:
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]" <address@hidden> 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]
<address@hidden>:
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]
<address@hidden>:
oi leslie,
é que esse atribuição <<< não funciona no meu prompt do unix...
Em Sexta-feira, 7 de Agosto de 2015 11:03, "Leslie Watter address@hidden
[shell-script]" <address@hidden> 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 << $ printf "%10s%20s%15s\n" $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]
<address@hidden> 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]" <address@hidden> 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]"
<address@hidden> 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 <<< "123;teste;cachorro"sh: Syntax error: `<' is not
expected.
abs,
Em Quinta-feira, 6 de Agosto de 2015 16:24, "'Julio C. Neves' address@hidden
[shell-script]" <address@hidden> escreveu:
Fala Leandro,já havia passado uma solução alternativa:$ IFS=\; read c1 c2 c3
<<< "123;teste;cachorro"$ printf "%10s%20s%15s\n" $c1 $c2 $c3 123
teste cachorro
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]
<address@hidden> 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]
--
Tiago B. Peczenyj
http://about.me/peczenyj
- Re: [shell-script] Preenchimento com espaços a esquerda, (continued)
- Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Paulo Bettega, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Fredi Rolf Bieging, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Paulo Bettega, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Julio C. Neves, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Julio C. Neves, 2015/08/07
Re: [shell-script] Preenchimento com espaços a esquerda,
diramos <=
Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/08
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, itamarnet, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, itamarnet, 2015/08/10