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

10

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

The dog is "very" beautiful

会变成什么

The dog is \"very\" beautiful

我看过这个答案(在使用gsub函数时如何用两个双引号替换一个双引号?),并试图进行调整,但是我对awk不是很熟练(而且sed也不可行,因为我同时在Linux和OS X上工作,它们安装了不同版本的'sed')


1
尝试运行以下命令:echo 'The dog is "very" beautiful' | gawk '{ gsub(/"/,"\\\"") } 1' - Jose Ricardo Bustos M.
@JoseRicardoBustosM。您应该使用那个创建您的回答。 - Federico Piazza
@Fede 我想使用 awk 非 GNU 版本进行检查... 因为 OP 使用的是 OS X。 - Jose Ricardo Bustos M.
2个回答

13

你链接的答案中提到:

使用 gsub

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

使用sed的另一种选择:

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

两种情况的输出结果均为:

这只狗非常美丽


4

您可以使用GNU awk:

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

你可以获得

The dog is \"very\" beautiful

说明:

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


如果其他人使用的是OS X,而不是“gawk”,只需使用“awk”。不确定在Linux中是否也可以直接调用“awk”。 - pedrorijo91
1
在OS X中,您可以安装类Unix工具,如gawk(它也已移植),最简单的方法是使用像Macports或Fink这样的软件包管理器。无论如何,gawk是awk的一种实现。 - JosEduSol
这段代码适用于所有 awk,除了可能旧的、损坏的 awk(Solaris 上的 /bin/awk),无论如何都不应该使用。 - Ed Morton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接