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
通话。