删除 awk 中的尾随零不起作用。语法错误

删除 awk 中的尾随零不起作用。语法错误
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通话。

相关内容