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

Man*_*bae 5 command-line bash sed

我有

echo "A url: \\\"http:..."
Run Code Online (Sandbox Code Playgroud)

它读取"A url: \"http:..."(< - 这是我的文本文件中的样子)

我需要

echo "A url: \'http:..."
Run Code Online (Sandbox Code Playgroud)

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

echo "A url: \\\"http:..." | sed -r 's/\\"+/\\\'/g'
Run Code Online (Sandbox Code Playgroud)

我可以理解为什么它失败了(sed 语句中间的单引号是问题所在,但我该怎么办?我尝试寻找第三种类型的引号来使用,但找不到。有任何技巧吗?

ter*_*don 7

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

$ echo "A url: \\\"http:..." | sed -r "s/\\\"/\\'/g"
A url: \'http:...
Run Code Online (Sandbox Code Playgroud)

只需用于"您的外部引号,sed然后您就可以'在替换中使用。您不想要,"+除非您可能有多个连续的"并且您想替换所有这些。如果这样做,请使用sed -r "s/\\\"+/\\'/g".