shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Problemas ao acrescentar caracteres em uma linha


From: Eri Ramos Bastos
Subject: Re: [shell-script] Problemas ao acrescentar caracteres em uma linha
Date: Thu, 25 Feb 2010 09:58:38 -0400

printf é seu amigo:

$ for comando in $(cut -d " " -f2 lista.txt ); do printf "%-30s%s\n"
$comando TESTE; done
COMANDO_AZUL                  TESTE
COMANDO_ABOBORA               TESTE
COMANDO3_                     TESTE

OK... deve perder a formatação no email... mas acredite, tá certo. :)

A mágica está no "%-30s%s":

%s faz o fprint substituir aquela posição por strings. Tipo:

$ printf "Isso é um %s, mano\n" TESTE
Isso é um TESTE, mano

[]'s
Eri Ramos Bastos

2010/2/25 andelnyr <address@hidden>:
> Prezados
>
> Estou recorrendo aos senhores pois estou experimentando uma certa dificuldade 
> para para tratar uma lista de comandos:
>
> A lista é assim:
>
> ID COMANDO_AZUL
> ID COMANDO_ABOBORA
> ID COMANDO3_ VERDE
>
> Eu preciso que ela fique assim:
>
> COMANDO_AZUL               VALOR:
> COMANDO_ABOBORA            VALOR:
> COMANDO3_ VERDE            VALOR:
>
> O total de caracteres desde o começo da linha até o inicio da palavra "VALOR" 
> deve ser obrigatoriamente de 30 caracteres.
>
> Então eu fiz:
>
> #!/bin/bash
> espacos="(30 espaços)"
> while read linha
> do
> vetor ( $linha )
> echo "${vetor[1]}$(echo $espacos | cut –c-$(expr 30 - ${#vetor[1]}))VALOR" >> 
> nova_lista
> done < lista
>
> E o resultado foi:
>
> COMANDO_AZULVALOR
> COMANDO_ABOBORAVALOR
> COMANDO3_ VERDEVALOR
>
> Então eu mudei para:
>
> #!/bin/bash
> espacos="------------------------------"
> while read linha
> do
> vetor ( $linha )
> echo "${vetor[1]}$(echo $espacos | cut –c-$(expr 30 - ${#vetor[1]}))VALOR"  | 
> tr – " " >> nova_lista
> done < lista
>
> E o resultado foi:
>
> COMANDO_AZUL
>              VALOR
> COMANDO_ABOBORA
>                 VALOR
> COMANDO3_ VERDE
>                VALOR
>
> Achei que fosse algum erro na lógica até que eu manualmente acrescentei um 
> espaço no final de alguns comandos da lista original e então ficou assim:
>
> COMANDO_AZUL                     VALOR <--- está certo
> COMANDO_ABOBORA                  VALOR <--- está certo
> COMANDO3_ VERDE
>                VALOR                  <--- está errado!
>
> Para me deixar fora de órbita, se eu criar uma lista num editor de textos com 
> poucos comandos, tudo funciona.
> Se eu pegar lista original e acrescentar manualmente um espaço no final de 
> cada comando, tudo funciona.
> Se eu pegar a lista original e aplicar o script – dá a zebra!
>
> Acredito que o problema esteja sendo causado pelo caracter "newline" no final 
> de cada comando... mas porque isso nao acontece em uma lista que eu crio com 
> o editor de textos?
>
> Adicionar manualmente o espaço em branco nas listas não e uma opção – pois 
> além de ser uma blasfêmia, cada lista pode ter mais de 50000 linhas.
>
> Desde já agradeço qualquer dica.
>
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> 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
>
>
>


reply via email to

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