【发布时间】:2023-12-07 11:08:01
【问题描述】:
您好,我想了解为什么以下方法不起作用:
awk 'BEGIN{ print "这是我的生活" }'
我知道,只要第一个单引号在 BEGIN 之前打开,它就会搜索通常在 } 之后找到的右单引号。但是在我的示例中,我想打印带有另一个单引号的东西。因为它将中断第一个和最后一个单引号的 SHELL 的打开和关闭,我需要做一些事情,所以我将其转义,它不起作用。我看到了这个答案 How to escape a single quote inside awk 但我不明白为什么。谢谢。
【问题讨论】:
-
因为shell不支持在单引号内转义。
-
但请注意
bash确实提供了一个很好的机制:awk $'BEGIN{ print "it\'s my life" }'只需在开头'之前加上$即可启用您想要的转义。 -
@WilliamPursell 但是你必须小心,因为那样它会扩展像
\n这样的转义序列,通常应该按字面意思传递给awk,所以你必须写\\n跨度> -
@WilliamPursell 您可以将其作为链接问题的答案发布。
-
@john 注意
awk与此处无关:echo 'BEGIN{ print "it\'s my life" }'(此语句也是如此)