Funciona se você colocar seu regex dentro de / /
(não sabia que você poderia acabar com eles), e certifique-se de que a substituição seja citada:
system("echo "id "| awk '{sub(/\.*0+$/,\""subst"\"); print}'");
Ou:
system("echo "id "| awk '{sub(/"regex"/,\""subst"\"); print}'");
Mas não sei por que você não está simplesmente fazendo isso:
sub(/\.*0+$/,"",id);
print id;
para evitar toda a chamada system
.