我对使用 sed 将 (") 双引号替换为 (') 单引号感到有些困惑。我在 sed 中尝试了很多组合,但不知何故它不允许这种特定的转换。
任何帮助将不胜感激。
ps:我也对其他替代方法持开放态度,但它应该在 bash (UNIX) 中运行良好
您可以使用如下:
s='abc"def"123'
echo "$s"|sed "s/\"/'/g"
abc'def'123
要仅替换一个字符,您不妨使用tr
:
$ printf '%s\n' '"Hello"' | tr \" \'
'Hello'
现在我希望你不要用它来以某种方式“清理”一些用户输入......
你可以尝试这样的事情:
[ ~]$ echo "'Hello'"|sed "s/'/\"/g"
"Hello"
反过来:
[ ~]$ echo \"Hello\"|sed "s/\"/'/g"
'Hello'
否则,您可以根据需要使用tr
而不是sed
:
[ ~]$ echo \"Hello\"|tr "\"" "'"
'Hello'
这可能对您有用:
sed 'y/'\''/"/' file