如何在AWK printf中转义百分号?

Mic*_*l A 4 awk printf

我正在制作一个 awk 语句,它允许我在屏幕上打印一些 unicode nop(在测试中,其中 18 个)。它目前看起来如下所示:

awk 'BEGIN {while (c++<18) printf "%u9090"}'
Run Code Online (Sandbox Code Playgroud)

当它执行时,它会返回一个运行时错误:

awk:运行时错误:没有足够的参数传递给 printf("%u9090")

我意识到我必须转义我的 % 字符,因为我没有将任何变量传递给 awk,并且它正在等待它们。我修改为以下内容:

awk 'BEGIN {while (c++<18) printf "\%u9090"}'
Run Code Online (Sandbox Code Playgroud)

但是我仍然遇到同样的错误?在GNU文档建议我应该用逃避\,所以我在什么尝试有点不对劲。

Jen*_*ens 7

所有printfs我知道(和C作为每C标准)允许你指定一个文字%的%%

您参考的 GNU 文档告诉您如何转义字符串文字中的特殊字符。但是, printf 的第一个 arg 被解释为格式字符串,因此字符串文字转义机制是错误的地方。查找的正确位置是 printf 规范(对于 awk,或者如果所有其他方法都失败,则为 C 语言)。