【问题标题】:how to escape the character < while replacing a string using sed如何在使用 sed 替换字符串时转义字符 <
【发布时间】:2016-07-22 12:10:54
【问题描述】:

我正在尝试使用 sed 将文本文件中的字符串 @STYLESHEET 替换为 &lt;xsl:stylesheet

我说错了

文件名、目录名或卷标语法不正确

下面是我的 bat 脚本:

       ECHO replacing strings in Generated.txt
       sed   s/@STYLESHEET/<xsl:stylesheet'/g Generated.txt > UpdatedGenerated.txt
       PAUSE
       type UpdatedGenerated.txt

文本文件有以下行:

@STYLESHEET version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" @END

【问题讨论】:

    标签: sed


    【解决方案1】:

    &lt; 字符很好。但是,您在替换结束时有一个撇号,不知道为什么。此外,您必须将 sed 命令作为字符串传递:sed '...'sed "..."。所需的报价类型也取决于您的控制台。

    因此,这将使您的脚本运行良好:

    sed   "s/@STYLESHEET/<xsl:stylesheet/g" Generated.txt > UpdatedGenerated.txt
         ^^^                             ^^^
    

    【讨论】:

    • 当我尝试 sed 's/@STYLESHEET/ UpdatedGenerated.txt 得到不正确的语法。当我尝试 sed 's/@STYLESHEET/xsl:stylesheet/g' Generated.txt > UpdatedGenerated.txt 获取无效命令时。当我尝试不使用单引号和字符
    • 这也可能取决于您的控制台。你也可以试试双引号。
    【解决方案2】:

    将选项放在双引号中后它起作用了。问题不在于字符 <.>sed "s/@STYLESHEET/&lt;xsl:stylesheet/g" Generated.txt &gt; UpdatedGenerated.txt

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 2012-02-17
      • 1970-01-01
      • 2016-05-27
      • 2019-11-15
      • 2021-03-01
      • 1970-01-01
      相关资源
      最近更新 更多