AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1119722
Accepted
Utkonos
Utkonos
Asked: 2023-01-08 22:37:18 +0800 CST2023-01-08 22:37:18 +0800 CST 2023-01-08 22:37:18 +0800 CST

如何在 AWK 中正确转义单引号

  • 772

尚不清楚在以下宏中还需要转义哪些内容才能使其在 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转义的十六进制字符。

freebsd
  • 1 1 个回答
  • 58 Views

1 个回答

  • Voted
  1. Best Answer
    Esa Jokinen
    2023-01-08T23:19:26+08:002023-01-08T23:19:26+08:00

    您不能转义单引号,因为命令本身被单引号包围,但您可以使用八进制转义码在 POSIX awk\047中表示。此外,您可以在 GNU awk ( )中'使用十六进制转义码。\x27gawk

    来自GNU Awk 用户指南,3.2 转义序列:

    \nnn

    八进制值nnn,其中nnn代表“0”和“7”之间的 1 到 3 个数字。例如,ASCII ESC(转义)字符的代码是 \033.

    \xhh…

    十六进制值hh,其中hh代表十六进制数字序列('0'–'9',以及 'A'–'F' 或 'a'–'f')。后最多允许两位数字\x。任何进一步的十六进制数字都被视为简单的字母或数字。(ce)(\x 转义序列在 POSIX awk 中是不允许的。)

    awk 'NR==90 { print "define(\`RELAY_MAILER_ARGS\047, \`TCP $h 2525\047)dnl"}1' example.com.mc
    
    gawk 'NR==90 { print "define(\`RELAY_MAILER_ARGS\x27, \`TCP $h 2525\x27)dnl"}1' example.com.mc
    

    如果您还想使用\140(or \x60) 来表示反引号:

    awk 'NR==90 { print "define(\140RELAY_MAILER_ARGS\047, \140TCP $h 2525\047)dnl"}1' example.com.mc
    
    gawk 'NR==90 { print "define(\x60RELAY_MAILER_ARGS\x27, \x60TCP $h 2525\x27)dnl"}1' example.com.mc
    
    • 3

相关问题

  • Mono 2.4 Ahead-Of-Time (AOT) 可以在 FreeBSD x86(或 x64)上编译吗?

  • FreeBSD 和 Linux 有什么区别?[关闭]

  • 在 FreeBSD 上安装和运行 MySql

  • 在 freeBSD 上安装 netbeans 的问题

  • 用于 Web 应用服务器的 FreeBSD 磁盘分区(Apache/MySQL/PHP)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve