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
通話を避けるために。