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: Tiago Peczenyj
Subject: Re: [shell-script] Preenchimento com espaços a esquerda
Date: Fri, 7 Aug 2015 16:38:53 +0200

Vamos la

o <<< se chama 'here strings'

vc encontra no 'man bash'

   Here Strings
       A variant of here documents, the format is:
              <<<word
       The word undergoes brace expansion, tilde expansion, parameter and  variable  expansion,  command  substitution,  arithmetic  expansion,  and  quote
       removal.  Pathname expansion and word splitting are not performed.  The result is supplied as a single string to the command on its standard input.

ou seja ao inves de 

$ echo "foo" | programa

vc pode fazer

$ programa <<< "foo"

O que pode estar acontecendo é vc esta usando um outro shell que não o Bash ( ou uma versão que não suporta esta construção ). Primeiro descubra o que vc esta usando ( sh, ksh, tcsh, bash, zsh ... ) e depois descubra quais features vc tem -- as vezes pode não estar funcionando por algum detalhe que não estamos vendo.

On Fri, Aug 7, 2015 at 4:25 PM, Leandro Valiengo address@hidden [shell-script] <address@hidden> wrote:
 

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 <<< "123;teste;cachorro"
%%%% > $ 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 espacos
teste tem que ficar: '               teste' --> 20 espacos
cachorro 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
P
róximos cursos de Shell

Cidade         Local Período
Curitiba 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 10
segunda 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

reply via email to

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