1

我对使用 sed 将 (") 双引号替换为 (') 单引号感到有些困惑。我在 sed 中尝试了很多组合,但不知何故它不允许这种特定的转换。

任何帮助将不胜感激。

ps:我也对其他替代方法持开放态度,但它应该在 bash (UNIX) 中运行良好

4

4 回答 4

2

您可以使用如下:

s='abc"def"123'
echo "$s"|sed "s/\"/'/g"

abc'def'123
于 2013-11-01T16:27:21.940 回答
2

要仅替换一个字符,您不妨使用tr

$ printf '%s\n' '"Hello"' | tr \" \'
'Hello'

现在我希望你不要用它来以某种方式“清理”一些用户输入......

于 2013-11-01T16:30:56.837 回答
1

你可以尝试这样的事情:

[ ~]$ echo "'Hello'"|sed "s/'/\"/g"
"Hello"

反过来:

[ ~]$ echo \"Hello\"|sed "s/\"/'/g"
'Hello'

否则,您可以根据需要使用tr而不是sed

[ ~]$ echo \"Hello\"|tr "\"" "'"
'Hello'
于 2013-11-01T16:26:58.493 回答
0

这可能对您有用:

sed 'y/'\''/"/' file
于 2013-11-01T16:36:48.563 回答