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
통화를 피하기 위해.