Olá!
Na minha sugestão não havia considerado o "deve ser obrigatoriamente de
30 caracteres". Do jeito que eu fiz, limita a 30 caracteres, ignorando o que
for maior que 30. A sugestão do Eri com o printf funcionou legal.
Sorry!
--
[]'s
Cléoson.
http://farinhadigital.blogspot.com/
Em 25 de fevereiro de 2010 10:59, Cléoson Barreto <[email protected]
> escreveu:
> Olá!
>
> Tentei o seguinte, veja se te ajuda:
>
> $ cat teste.txt
>
> ID COMANDO_AZUL
> ID COMANDO_ABOBORA
> ID COMANDO3_ VERDE
>
> $ for i in $(cut -f2 -d" " teste.txt); do echo "${i:0:29} VALOR"; done
>
> COMANDO_AZUL VALOR
> COMANDO_ABOBORA VALOR
> COMANDO3_ VALOR
>
> --
> []'s
> Cléoson.
> http://farinhadigital.blogspot.com/
>
> Em 25 de fevereiro de 2010 09:43, andelnyr <[email protected]>escreveu:
>
>
>>
>> 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.
>>
>
>
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
---------------------------------------------------------------------
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: [email protected]
---------------------------------------------------------------------
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:
[email protected]
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html