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 20:48:32 +0200

Obrigado mestre :)

Em sexta-feira, 7 de agosto de 2015, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 

Fala Tiago,
em 2000, qdo comecei a a escrever o meu livro, usava o ksh e por isso tem um exemplo errado, que sempre que publico uma nova edição ou revisão, me esqueço de corrigir. Lá está escrito:

IFS=:
grep ^root /etc/passwd | read Usu Lixo Uid Gid Coment ShIni HomeDir

Pois é, lá o tratamento do fork do pipe é diferente e as variáveis permanecem setadas. O problema é que o HP-UX não se enquadra em nenhuma categoria de UNIX padrão e não sei como ele trata isso. A única forma de ver se funciona ou não é o Leandro testar a minha proposta e colocar na lista, mas depois que coloquei a proposta UNIX, ele não falou mais nada.

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


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




--
Tiago B. Peczenyj

http://about.me/peczenyj


reply via email to

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