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: Leandro Valiengo
Subject: Re: [shell-script] Preenchimento com espaços a esquerda
Date: Sat, 8 Aug 2015 13:59:26 +0000 (UTC)

Oi Julio, 

bom dia. 
Ontem eu consegui com a solucao dos senhores, muito obrigado. Ai o que aconteceu no fim do dia? Mudaram tudo....rs

entao vamos lá...será delimitado, nao terá separador, conforme mandei ontem no fim do dia. 

agradeco a ajuda de todos vcs e me desculpem se causei algum embaraço.  





Em Sexta-feira, 7 de Agosto de 2015 19:30, "address@hidden [shell-script]" <address@hidden> escreveu:


 

Leandro,

Sem querer aumentar mais ainda o blá-blá-blá, concordo com o Julião.
Decida-se:
- As linhas do arquivo têm separador ou não?
- O arquivo terá outras linhas?
- Todas as linhas têm o mesmo tamanho?
- Mande exemplo de outras linhas, e não uma só.
Ajuda a gente, prá gente poder ajudar você. :P
Não receba isso como uma "catracada".
Estamos aqui prá ajudarmo-nos mutuamente.
Prova disso, é o número de posts sobre sua dúvida, mostrando a disposição da turma em ajudá-lo.


Diramos

De: address@hidden
Enviada: Sexta-feira, 7 de Agosto de 2015 18:55
Para: address@hidden
Assunto: [shell-script] Preenchimento com espaços a esquerda

1 - Antes vc disse que a sua entrada era 123;cachorro;teste. Agora vc diz que é 123cachorroteste. Qual é a certa? Se for a segunda, ninguém conseguirá resolver pq não tem separador nem tamanho fixo;2 - Caso o certo seja a 1ª forma, te mandei a mesma solução duas vezes e pedi para testar e reportar o que aconteceu. Vc não fez isso e estou achando que essa thread, que é boba e simples, já tem muito blablablá.
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 7 de agosto de 2015 17:46, Leandro Valiengo address@hidden [shell-script] <address@hidden> escreveu:

 

Opa...claro. 
O arquivo origem será:
123cachorroteste

O arquivo destino será: 
       123            cachorro          teste

Vejam que o segundo arquivo, o destino temos o numero 123 com 10 posicoes. A palavra cachorro, com 20 posicoes. E a palavra teste com 15 posicoes. 

Em Sexta-feira, 7 de Agosto de 2015 16:43, "'Julio C. Neves' address@hidden [shell-script]" <address@hidden> escreveu:


 

Leandro,já te passei uma solução e te pedi feed back da solução. Para acabar com o problema da here string que o sh não tem, postei o seguinte:
"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 c3printf "%10s%20s%15s\n" $c1 $c2 $c3"
Como não tenho HP-UX, te peço o favor de testar e dizer o que houve.
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 7 de agosto de 2015 15:26, Leandro Valiengo address@hidden [shell-script] <address@hidden> escreveu:

 

É pessoal...o tópico tá crescendo...e meu problema ficando maior...
vejamos: 
tenho um arquivo posicional: 
primeira posicao 1,3 - (123)segunda posicao 4, 11 - (cachorro)terceira posicao 12, 16 - (teste)
123cachorroteste
e tenho que fazer um shell para ler esse arquivo e gerar um novo arquivo.
o novo será: 
primeira posição 1, 10 - testesegunda posicao 11, 30 - 123terceira posicao 31, 45 - cachorro
Podem me ajudar, por favor? 
abs 

Em Sexta-feira, 7 de Agosto de 2015 14:23, "address@hidden [shell-script]" <address@hidden> escreveu:


 

Corrigindo.

Continua com numero de espaço em branco errado:

8, 16 e 8

ao invés de 10, 20 e 15 que seria o correto.

Diramos

De: address@hidden

Enviada: Sexta-feira, 7 de Agosto de 2015 14:19

Para: address@hidden

Assunto: [shell-script] Preenchimento com espaços a esquerda

Continua com numero de espaço em branco. Veja:

#!/bin/bash

IFS="\;" var="123;teste;cachorro"; echo "$var" | (read c1 c2 c3;printf "%10s%20s%15s\n" $c1 $c2 $c3)

123 teste cachorro

De: address@hidden

Enviada: Sexta-feira, 7 de Agosto de 2015 14:03

Para: address@hidden

Assunto: [shell-script] Preenchimento com espaços a esquerda

$c1 $c2 e $c3 ficaram no subshell do pipe. Teria que imprimir as

variáveis dentro daquele subshell

IFS="\;" var="123;teste;cachorro"; echo "$var" | (read c1 c2 c3;printf "%10s%20s%15s\n" $c1 $c2 $c3)

$var tem que estar entre aspas, senão o valor muda

IFS="\;" var="123;teste;cachorro"; echo "$var"

123;teste;cachorro

IFS="\;" var="123;teste;cachorro"; echo $var

123 teste cachorro

Abraços Paulo Bettega

On 07-08-2015 13:07, address@hidden [shell-script] wrote:

>

> Em TEMPO:

>

> Se eu faço assim:

>

> #!/bin/bash

> IFS="\;"

> var="123;teste;cachorro"

> echo $var | read c1 c2 c3

> printf "%10s%20s%15s\n" $c1 $c2 $c3

>

> Não dá erro, mas o retorno é vazio.

>

> Grato

>

> Diramos

>

> De: address@hidden

> Enviada: Sexta-feira, 7 de Agosto de 2015 13:02

> Para: address@hidden

> Assunto: [shell-script] Preenchimento com espaços a esquerda

>

>

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

>

>

>

> Fala Thiago,

>

> é o xterm

>

> Em Sexta-feira, 7 de Agosto de 2015 11:51, "Tiago Peczenyj address@hidden [shell-script]"

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

>

>

>

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

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

>

>

>

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

>

>

>

> oi leslie,

>

> é que esse atribuição < Em Sexta-feira, 7 de Agosto de 2015 11:03, "Leslie Watter address@hidden [shell-script]" 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

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

> escreveu:

>

>

>

> Fala Leandro, que shell é esse que vc está usando? Isso é UNIX? Se for, o ksh não tem here strings

> (

> Em 06/08/2015 17:03, "Leandro Valiengo address@hidden [shell-script]" 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 <

> Em Quinta-feira, 6 de Agosto de 2015 16:24, "'Julio C. Neves' address@hidden [shell-script]"

> escreveu:

>

>

>

> Fala Leandro,já havia passado uma solução alternativa:$ IFS=\; read c1 c2 c3 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] 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]

>

> [As partes desta mensagem que não continham texto foram removidas]

>

>

> ----------------------------------------------------------

> Enviado por: address@hidden

------------------------------------

------------------------------------

----------------------------------------------------------

Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.

----------------------------------------------------------

Sair da lista: address@hidden

----------------------------------------------------------

Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net

----------------------------------------------------------

Servidor Newsgroup da lista: news.gmane.org

Grupo: gmane.org.user-groups.programming.shell.brazil

------------------------------------

Links do Yahoo Grupos

Para visitar o site do seu grupo na web, acesse:

http://br.groups.yahoo.com/group/shell-script/

Para sair deste grupo, envie um e-mail para:

address@hidden

O uso que você faz do Yahoo Grupos está sujeito aos:

https://info.yahoo.com/legal/br/yahoo/utos/terms/

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]




reply via email to

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