我正在制作一个awk语句,允许我在屏幕上打印一些unicode nop(在测试中,其中18个)。目前看起来如下:
awk 'BEGIN {while (c++<18) printf "%u9090"}'
执行此操作时,将返回运行时错误:
awk:运行时错误:没有足够的参数传递给printf(“%u9090”)
我意识到我必须逃避我的%字符,因为我没有将任何变量传递给awk,并且它期待它们。我修改了以下内容:
awk 'BEGIN {while (c++<18) printf "\%u9090"}'
但是我仍然遇到同样的错误? gnu documentation表明我应该使用\
逃避,所以我还有点不好意思。
答案 0 :(得分:3)
我知道的所有printfs
(根据C标准在C中)允许您使用%%
指定文字百分比。
您引用的GNU文档告诉您如何转义字符串文字中的特殊字符。但是,printf的第一个arg是解释作为格式字符串,因此字符串文字转义机制是错误的查找位置。查找的正确位置是printf规范(对于awk,或者如果所有其他都失败,则为C语言)。