【问题标题】:How to escape a percent sign in AWK printf?如何在 AWK printf 中转义百分号?
【发布时间】:2017-04-13 07:04:07
【问题描述】:

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

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

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

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

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

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

但是我仍然遇到同样的错误? gnu documentation 建议我应该使用 \ 转义,所以我对还有什么尝试有点不妥。

【问题讨论】:

    标签: awk printf


    【解决方案1】:

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

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

    【讨论】:

    • 有道理。这也有效 - 虽然并没有真正解释文档链接!
    • 也感谢您的编辑 - 帮助我将这一切置于更好的背景中。
    • @Codingo 我已经相应地扩展了我的答案。
    猜你喜欢
    • 2011-11-03
    • 1970-01-01
    • 2017-03-05
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    相关资源
    最近更新 更多