当前位置: 首页 > 知识库问答 >
问题:

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

梁明辉
2023-03-14

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

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

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

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

我意识到我不得不逃避我的%字符,因为我没有向awk传递任何变量,它正在期待它们。我修改如下:

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

然而,我仍然面临着同样的错误?gnu文档建议我应该使用\转义,所以我不知道还可以尝试什么。

共有1个答案

丁曦
2023-03-14

我所知道的所有printfs(根据C标准,在C语言中也是如此)都允许您使用%%指定文字百分比。

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

 类似资料:
  • 问题内容: 我正在尝试选择连续包含四个百分号的数据。如何摆脱百分号,使我的LIKE状态正常? 谢谢 问题答案: 使用与转义字符条款: 这将搜索列中包含该字符的所有记录。 DB2 / z的格式略有不同: 显然,您需要谨慎选择转义符,以免干扰字符串的其余部分,但是对于静态字符串而言,这相对容易。动态构建的字符串将需要动态构建的查询,以便它不使用字符串中的字符。

  • 问题内容: 我有以下代码 我想获得输出: 实际发生的情况: 问题答案:

  • 我有以下代码 我想得到输出: 实际发生的事情:

  • 问题内容: 我的公司以NO_BACKSLASH_ESCAPES模式运行MySQL。在这种模式下,如何转义文字或类似LIKE的查询?标准方法是,但在此模式下不起作用。 示例:一列具有以下值:,。以下查询在标准模式下有效,但在NO_BACKSLASH_ESCAPES模式下无效: 问题答案: 你需要逃脱 对于无论NO_BACKSLASH_ESCAPES模式如何均可运行的版本,可以使用其他字符,例如管道:

  • 问题内容: 我正在尝试下面的代码,但出现错误 错误 我想要结果 问题答案: 请改用,它不使用正则表达式,因为您根本不需要它们: 这将按预期打印。

  • 问题内容: 我坚持这样: 我有一个写在HTML报告。的是 但是该链接不起作用,因为“ Evidencia”未包含在引号中,如何将引号放在参数中? 在带来这二零一三年十月一十日09:15:00.110 问题答案: 您可以使用。在Java中,您可以使用来访问转义字符。