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 <andel...@yahoo.com.br>: > 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: 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 > > > ------------------------------------ --------------------------------------------------------------------- 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