【问题标题】:sed - replacing line with special characterssed - 用特殊字符替换行
【发布时间】:2013-11-07 20:55:22
【问题描述】:

不太确定如何使它工作。抱歉,我对此有点陌生。

所以我有一个文件,其中一行以

开头
    <script type="text/javascript">var NREUMQ=NREUMQ

我想用

替换那行
</head>

我好像搞不定。我知道我需要这样的东西:

sed 's/^    <script type="text/javascript">var NREUMQ=NREUMQ/hello/g index3.html

但我不确定在哪里转义特殊字符。显然'/'需要它。有人可以帮忙吗?

【问题讨论】:

    标签: bash sed


    【解决方案1】:

    使用替代正则表达式分隔符,而不是 /,因为您的匹配文本中包含 /

    sed -i.bak 's~^ *<script type="text/javascript">var NREUMQ=NREUMQ~</head>~' index3.html
    

    【讨论】:

      【解决方案2】:

      你可以使用反斜杠转义任何东西:

      sed "s/^    <script type=\"text\/javascript\">var NREUMQ=NREUMQ/hello/g" index3.html
      

      sed 的好处是您还可以使用备用分隔符。它将使用您在s 之后放置的任何内容,这意味着您不必转义斜线:

      sed "s#^    <script type=\"text/javascript\">var NREUMQ=NREUMQ#hello#g" index3.html
      

      【讨论】:

        【解决方案3】:

        你可以用反斜杠转义它们;但你也可以写

        sed 's!...!...!' 
        

        ('!' 可以是任意字符)

        【讨论】:

          【解决方案4】:

          你可以使用:

          sed 's|<script type="text/javascript">var NREUMQ=NREUMQ|</head>|'
          

          【讨论】:

            【解决方案5】:
            sed "/<script type=\"text\/javascript\">var NREUMQ=NREUMQ/ s#.*#</head>#"
            

            你也可以保留s#^\( *\).*#\1&lt;/head&gt;#"开头的空格

            【讨论】:

              猜你喜欢
              • 2019-09-07
              • 2021-06-11
              • 1970-01-01
              • 2019-05-14
              • 1970-01-01
              • 2021-11-17
              • 1970-01-01
              相关资源
              最近更新 更多