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 <andel...@yahoo.com.br> 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: shell-script-unsubscr...@yahoogrupos.com.br --------------------------------------------------------------------- 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: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html