awk에서 후행 0을 제거하면 작동하지 않습니다. 문법 오류

awk에서 후행 0을 제거하면 작동하지 않습니다. 문법 오류
regex = "\\.*0+$";
subst = "";
system("echo "id "| awk '{sub(\\.*0+$," subst"); print}'");

다음과 같은 오류가 발생합니다.

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

나는 또한 이것을 시도했다

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

이것도 소용이 없습니다.

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

이것은 나에게 동일한 예외를 제공합니다

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

그러나 명령줄에서는 이 기능이 제대로 작동합니다.

echo 444000 | awk '{sub("\\.*0+$",""); print}' -> 444

답변1

정규식을 여기에 넣고 / /(완전히 제거할 수 있는지 몰랐음) 교체 항목이 인용되는지 확인하면 작동합니다.

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

또는:

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

하지만 왜 단순히 그렇게 하지 않는지 잘 모르겠습니다.

sub(/\.*0+$/,"",id);
print id;

전체 system통화를 피하기 위해.

관련 정보