使用sed替换所有'with'和all'with \“

时间:2011-08-10 03:52:31

标签: bash sed

我想使用sed将所有'替换为\',将所有"替换为\"。示例输入:

"a" 'b'

输出:

\"a\" \'b\'

2 个答案:

答案 0 :(得分:1)

您的帖子中没有?个字符,但我会假设您的问题是“我该如何替换?”。我刚刚用你的输入做了一个快速测试文件,这个命令行似乎有效:

sed -e 's#"#\\"#g' -e "s#'#\\\'#g"

示例:

$ cat input 
"a" 'b'
$ sed -e 's#"#\\"#g' -e "s#'#\\\'#g" input 
\"a\" \'b\'

答案 1 :(得分:1)

虽然使用sed是可移植的解决方案,但所有这些都可以使用Bash的内置字符串操作函数来完成。

(
#set -xv
#str=$'"a" \'b\''
str='"a" '"'b'"  # concatenate 'str1'"str2"
str="${str//\"/\\\"}"
str="${str//\'/\'}"
echo "$str"
)