如何逃避AWK printf中的百分号?

时间:2017-04-13 07:04:08

标签: awk printf

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

awk 'BEGIN {while (c++<18) printf "%u9090"}'

执行此操作时,将返回运行时错误:

  

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

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

awk 'BEGIN {while (c++<18) printf "\%u9090"}'

但是我仍然遇到同样的错误? gnu documentation表明我应该使用\逃避,所以我还有点不好意思。

1 个答案:

答案 0 :(得分:3)

我知道的所有printfs(根据C标准在C中)允许您使用%%指定文字百分比。

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