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

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

Problemas ao acrescentar caracteres em uma linha


From: andelnyr
Subject: Problemas ao acrescentar caracteres em uma linha
Date: Thu, 25 Feb 2010 12:43:40 -0000
User-agent: eGroups-EW/0.82

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.




reply via email to

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