【发布时间】:2011-01-16 12:42:43
【问题描述】:
我正在尝试使用 sed 将 \"(反斜杠双引号)替换为 '(引号)。
sed "s/\\\"/\'/g" file.txt
该命令未按预期工作。它替换了文本文件中的所有“,而不仅仅是\”。
它和 sed "s/\"/\'/g" file.txt 做同样的事情
我正在开发 Mac OS X Leopard。
有人知道吗?
【问题讨论】:
-
如有疑问,请添加另一个反斜杠。
我正在尝试使用 sed 将 \"(反斜杠双引号)替换为 '(引号)。
sed "s/\\\"/\'/g" file.txt
该命令未按预期工作。它替换了文本文件中的所有“,而不仅仅是\”。
它和 sed "s/\"/\'/g" file.txt 做同样的事情
我正在开发 Mac OS X Leopard。
有人知道吗?
【问题讨论】:
不必使用太多引号。 \042 八进制表示",\047 表示八进制表示单引号
awk '{gsub("\042","\047") }{print}' file
【讨论】:
引用 bash 的问题很有趣。
$ cat 输入 “这是一个有引用问题的“输入文件”。” $ sed -e 's/\\"/'"'"'/g' 输入 “这是一个存在引用问题的‘输入文件’。”
请注意,三个字符串拼接在一起构成 sed 脚本:
s/\\"/'/g第一个和最后一个用单引号引起来,中间用双引号引起来。
Matthew 的命令通过连接两个字符串而不是三个字符串来工作:
s/\\"/'/g第一个是单引号,第二个是双引号。
【讨论】:
您正在处理臭名昭著的 shell 引用问题。尝试在 s//g 周围使用单引号,或添加额外的转义:
sed "s/\\\\\"/\'/g"
【讨论】: