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: 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




    
     

    
    






  
  
  









reply via email to

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