如何使用sed将所有反斜杠替换为双引号?现有命令无作用
解决sed替换反斜杠为双引号的问题
你的sed命令没效果是因为转义和引号的处理完全混乱了,咱们一步步来修正:
首先明确需求:把输入里的单个反斜杠\替换成双引号",输入是"prova d\"amico",期望输出"prova d""amico"。
正确的命令有两种写法:
方式1:用单引号包裹sed脚本(推荐,转义更简单)
sed 's/\\/"/g' nomefile单引号会完全保留里面的内容,不会被shell解析。
sed里要匹配\必须用\\转义,所以这里\\匹配目标反斜杠,"是替换后的内容。方式2:用双引号包裹sed脚本(需要额外转义)
sed "s/\\\\/\"/g" nomefile双引号里shell会解析转义字符,所以要让
sed拿到\\,得在shell里写\\\\(shell把\\\\解析成\\传给sed);同时替换的"也要用\"转义,避免提前结束双引号。
为什么你的原命令无效?
你写的sed -e "s/'\\\\''/\"/g" nomefile,实际匹配的是'\'(单引号+反斜杠+单引号)的组合,但你的输入里根本没有这个内容,自然不会有任何替换效果。
测试一下:如果你的nomefile内容是"prova d\"amico",用上面的正确命令执行后,就能得到你想要的"prova d""amico"。
内容的提问来源于stack exchange,提问作者realtebo
相关产品推荐
相关产品推荐

