尚不清楚在以下宏中还需要转义哪些内容才能使其在 FreeBSD 上与 awk 或 sed 一起使用。
define(`RELAY_MAILER_ARGS', `TCP $h 2525')dnl
SMART_HOST
这是一个 awk 命令,它试图在配置下方的第 90 行插入上述行。
awk 'NR==90 { print "define(\`RELAY_MAILER_ARGS\', \`TCP $h 2525\')dnl"}1' example.com.mc
该命令导致以下错误:
Unmatched '"'.
未来的编辑注意:反引号/单引号不是错字。这是用于编写 Sendmail 配置宏的 m4 语言的一个古老怪癖:“m4 使用单引号(左“`”和右“'”)来引用参数”
附加说明sed
:在 FreeBSD 上使用时,八进制转义符似乎不起作用。在那种情况下,在那种情况下使用xNN
转义的十六进制字符。
您不能转义单引号,因为命令本身被单引号包围,但您可以使用八进制转义码在 POSIX awk
\047
中表示。此外,您可以在 GNU awk ( )中'
使用十六进制转义码。\x27
gawk
来自GNU Awk 用户指南,3.2 转义序列:
如果您还想使用
\140
(or\x60
) 来表示反引号: