Alberto Vieira Ferreira Monteiro wrote:
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.
A dica do printf é prática, mas pelo desafio de fazer com sed:
Você esqueceu o caractere antes do asterisco no inicio da RE. Tambem não
precisa daquele ":".
$ echo 00000001 | sed -e 's/.*\([0-9]\{5\}\)/\1/g'
00001
$ echo 000000012 | sed -e 's/.*\([0-9]\{5\}\)/\1/g'
00012
$ echo 0000000123 | sed -e 's/.*\([0-9]\{5\}\)/\1/g'
00123
$ echo 00000001234 | sed -e 's/.*\([0-9]\{5\}\)/\1/g'
01234
$ echo 000000012345 | sed -e 's/.*\([0-9]\{5\}\)/\1/g'
12345
Prefiro evitar o -n, mas ficaria assim:
sed -n 's/.*\([0-9]\{5\}\)/\1/p'