用单引号替换双引号时从终端使用 sed

用单引号替换双引号时从终端使用 sed

我有

echo "A url: \\\"http:..."

内容为"A url: \"http:..."(<- 这是我文本文件中的内容)

我需要

echo "A url: \'http:..."

然而,由于所有的引号,我的 sed 命令无法正常工作

echo "A url: \\\"http:..." | sed -r 's/\\"+/\\\'/g'

我知道为什么它会失败(sed 语句中间的单引号是问题所在,但我该怎么办呢?我尝试寻找第三种类型的引号,但没找到。有什么办法吗?

答案1

如果你想改变任何出现的\"with \',你可以这样做:

$ echo "A url: \\\"http:..." | sed -r "s/\\\"/\\'/g"
A url: \'http:...

只需使用"来作为您的外引号sed,然后您就可以在替换中使用。除非您可能有多个连续的引号并且想要替换它们,否则'您不需要。如果需要,请使用。"+"sed -r "s/\\\"+/\\'/g"

相关内容