printf no shell
Rolou na lista de usuários fedora-br a seguinte dúvida :
> Desisto. Ou eu sou muito burro, ou essa documentação é muito ruim.
>
> Eu quero fazer o seguinte: dado um número n (que pode ser desde 1 a 99999),
> eu quero escrevê-lo com 5 campos, precedidos por 0.
>
> Por exemplo, 42 vira 00042, e 3141 vira 03141
>
> Em C, isso é trivial: printf("%05d", n);
>
> Mas eu sou teimoso, e tentei fazer isso com sed.
>
> Teoricamente, alguma coisa do tipo:
>
> n=42
> echo "00000$n:" | sed -n 's/*([0-9]{5}):/1/p'
>
> devia funcionar, mas não funciona. Tentei acrescentar vários , sem sucesso.
>
> Obviamente, os helps e FAQs não ajudam. Alguém tem alguma idéia de
> como isso funciona?
>
> Alberto Monteiro
>
Minha resposta :
Não manjo nada de sed, mas acho que o comando abaixo resolve seu problema :
printf formato string
Onde formato é igual ao do C %d,%c etc....
E a string é o que deve ser impresso.
Exemplo:
printf %09d 10
Serve ?
O legal do unix ser fundamentado no C é que ele herda muita coisa boa, na dúvida man printf :)
Alias, se alguém souber como deixar o sed do nosso camarada funcional, poste nos comments.



