【问题标题】:Sed replace ">" to "/>" bashSed 将“>”替换为“/>”bash
【发布时间】:2013-08-31 23:57:01
【问题描述】:

我是新手,我想用 sed 替换“特殊”字符。我有一个 xml 文件,它的格式不正确,并且在任何数据行的末尾都以“>”结尾,我需要废弃它并为此我需要用“/>”更改“>”。但是当我尝试时:

sed -i s/>//>/g FILE

returns => -bash: //: 是一个目录

与:

sed -i s/>/\/>/g FILE

还有

sed -i s,>,\>,g FILE

手册页没有解决这个问题。

有人遇到这个问题吗?

【问题讨论】:

    标签: linux bash shell ubuntu sed


    【解决方案1】:

    如果你使用斜线作为分隔符,你应该转义它:

    sed 's/>/\/>/g'
    

    或使用其他字符,例如:

    sed 's_>_/>_g'
    

    请注意,这将替换文件中的所有匹配项,而不仅仅是最后一个

    如果你想只匹配>而不是/,你可以使用这个:

    sed -r 's_[^/]>_/>_g' file
    

    【讨论】:

    • 嗨,我尝试了这两个选项,但它显示“sed: -e expression #1, char 2: unterminated `s' command” with sed -i s_>_\>_g data.xml 和 sed -is,>,\>,g data.xml
    • @MarcPursals 你有错误的斜线。尝试使用正斜杠/。还要单引号参数。
    【解决方案2】:

    sed -i 's/>$//>/g' FILE 对你有用吗?

    $ echo "<blah> <blah>" | sed 's/>$/\/>/g'
    <blah> <blah/>
    

    【讨论】:

      猜你喜欢
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 2011-12-02
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      相关资源
      最近更新 更多