代码之家  ›  专栏  ›  技术社区  ›  jlfenaux

替换为Mac OS X上的SED Leopard不执行预期的操作

  •  5
  • jlfenaux  · 技术社区  · 16 年前

    我正在尝试用sed将\“(反斜杠double quote)替换为“(quote)。

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

    命令无法按预期工作。它替换了“文本文件中的所有内容,而不仅仅是\”。

    它的作用与sed“s/\”/\'/g“file.txt相同。

    我在研究Mac OS X Leopard。

    有人有线索吗?

    3 回复  |  直到 15 年前
        1
  •  8
  •   Paul Tomblin    16 年前

    你在处理臭名昭著的空壳报价问题。尝试在s//g周围使用单引号,或者添加一个额外的转义:

    sed "s/\\\\\"/\'/g"
    
        2
  •  2
  •   Greg Bacon    16 年前

    用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

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

    Matthew的命令通过连接两个字符串而不是三个来工作:

    • S/\“/
    • '/g

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

        3
  •  0
  •   ghostdog74    16 年前

    不用用太多的引号。\ 042八进制用于 " 并且\047是单引号的八进制

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