remova os zeros à direita no awk não funcionando. erro de sintaxe

2
regex = "\.*0+$";
subst = "";
system("echo "id "| awk '{sub(\.*0+$," subst"); print}'");

Está dando o seguinte erro:

awk: cmd. line:1: {sub(\.*0+$,); print}
awk: cmd. line:1:      ^ backslash not last character on line

Eu também tentei este aqui

system("echo "id "| awk '{sub("regex"," subst"); print}'");

e isso também não é trabalhoso.

 str="echo " id " | awk '{sub(" regex  "," subst "); print;}'" ; str | getline check;

Isso está me dando a mesma exceção

awk: cmd. line:1: {sub(\.*0+$, ); print}
awk: cmd. line:1:      ^ backslash not last character on line

Mas, na linha de comando, esta função está funcionando bem.

echo 444000 | awk '{sub("\.*0+$",""); print}' -> 444
    
por Gilles 28.02.2012 / 23:58

1 resposta

1

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 .

    
por 29.02.2012 / 00:06