在Mac OS X上用sed替换Leopard没有达到预期的效果

时间:2010-02-13 16:50:08

标签: regex macos unix sed

我正试图用'(引用)替换\“(反斜杠双引号)使用sed。

sed "s/\\\"/\'/g" file.txt

该命令无法按预期工作。它取代了所有“在文本文件中,而不仅仅是”。

与sed“s / \”/ \'/ g“file.txt

相同

我正在使用Mac OS X Leopard。

有人有线索吗?

3 个答案:

答案 0 :(得分:8)

你正在处理臭名昭着的shell引用问题。尝试在s // g周围使用单引号,或添加额外的转义:

sed "s/\\\\\"/\'/g"

答案 1 :(得分:2)

使用bash引用问题很有趣。

$ cat input
"This is an \"input file\" that has quoting issues."
$ sed -e 's/\\"/'"'"'/g' input
"This is an 'input file' that has quoting issues."

请注意,有三个字符串对接在一起以生成sed脚本:

  • s/\\"/
  • '
  • /g

第一个和最后一个引用单引号,中间引用双引号。

马修的命令通过加入两个字符串而不是三个字符串来起作用:

  • s/\\"/
  • '/g

其中第一个是单引号,第二个是双引号。

答案 2 :(得分:0)

不必使用太多的引号。 \ 042八进制用于",\ 047是八进制用于单引号

awk '{gsub("\042","\047") }{print}' file