[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.
- Problemas ao acrescentar caracteres em uma linha,
andelnyr <=