【问题标题】:How to replace double quotes by escaped double quote in awk?如何在awk中用转义双引号替换双引号?
【发布时间】:2015-07-31 22:30:33
【问题描述】:

在 awk 中如何用转义双引号替换所有双引号?

The dog is "very" beautiful

会变成

The dog is \"very\" beautiful

我已经看到了这个答案 (Using gsub to replace a double quote with two double quotes?) 并且我已经尝试对其进行调整,但是我对 awk 不是很好(而且 sed 不是选择,因为我在 Linux 和 OS X 上都工作,而且他们有安装了不同的“sed”)

【问题讨论】:

  • 试试echo 'The dog is "very" beautiful' | gawk '{ gsub(/"/,"\\\"") } 1'
  • @JoseRicardoBustosM。你应该用那个来创建你的答案
  • @Fede 我想使用 awk 非 gnu 进行检查 .... 因为 OP 有 OS X

标签: regex awk


【解决方案1】:

根据您链接的答案:

使用 gsub

echo 'The dog is "very" beautiful' | gawk '{ gsub(/"/,"\\\"") } 1'

替代方案,使用 sed

echo 'The dog is "very" beautiful' | sed 's/"/\\"/g'

在这两种情况下,输出都是:

这只狗“非常”漂亮

【讨论】:

    【解决方案2】:

    您可以与 GNU awk 一起使用:

    echo 'The dog is "very" beautiful' | gawk '{ gsub(/"/,"\\\"") } 1'
    

    你得到

    The dog is \"very\" beautiful
    

    解释:

    对于特殊字符\",必须使用转义序列\\\"

    【讨论】:

    • 如果其他人正在使用 OS X,而不是 'gawk',只需使用 'awk'。不确定在 linux 中是否也可以调用 'awk'
    • @pedrorijo91 在 OS X 中,您可以安装 gawk 等 unix 工具(它也已被移植),最简单的方法是使用 Macports 或 Fink 等包管理器。无论如何 gawk 是 awk 的一个实现。
    • 此代码适用于所有 awk,但可能永远不应该使用的旧的、损坏的 awk(Solaris 上的 /bin/awk)除外。
    猜你喜欢
    • 2017-04-09
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多