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

おすすめ記事