Bash 使用sed替换所有';使用\';及所有";用\";
我想使用sed将所有Bash 使用sed替换所有';使用\';及所有";用\";,bash,sed,Bash,Sed,我想使用sed将所有'替换为\',将所有“替换为\”。输入示例: "a" 'b' 输出: \"a\" \'b\' 您的帖子中没有?字符,但我假设您的问题是“我如何做这样的替换?”。我刚刚用您的输入创建了一个快速测试文件,这个命令行似乎可以工作: sed -e 's#"#\\"#g' -e "s#'#\\\'#g" 例如: $ cat input "a" 'b' $ sed -e 's#"#\\"#g' -e "s#'#\\\'#g" input \"a\" \'b\' 虽然使用sed
'
替换为\'
,将所有“
替换为\”
。输入示例:
"a" 'b'
输出:
\"a\" \'b\'
您的帖子中没有
?
字符,但我假设您的问题是“我如何做这样的替换?”。我刚刚用您的输入创建了一个快速测试文件,这个命令行似乎可以工作:
sed -e 's#"#\\"#g' -e "s#'#\\\'#g"
例如:
$ cat input
"a" 'b'
$ sed -e 's#"#\\"#g' -e "s#'#\\\'#g" input
\"a\" \'b\'
虽然使用
sed
是一种可移植的解决方案,但所有这些都可以使用Bash
的内置字符串操作函数来完成
(
#set -xv
#str=$'"a" \'b\''
str='"a" '"'b'" # concatenate 'str1'"str2"
str="${str//\"/\\\"}"
str="${str//\'/\'}"
echo "$str"
)
sed's/\'\'/g'(在我的另一个例子中用“for”代替)我几乎对你的答案投了赞成票,但我相信使用默认分隔符(
/
),除非有很好的理由不这样做(例如,模式或替换包含这样的字符)此外,由于
是注释字符,我更反对使用它,比如说:
或,
。当模式包含\
或/
字符时,我不喜欢使用/
,这只会造成更多的混乱。我在这里使用
,因为它不在模式中我想:
可以。