V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tumblr
V2EX  ›  正则表达式

[RegEx]如何根据中间内容查找两端的字符串

  •  
  •   Tumblr · 2018-09-18 01:00:21 +08:00 · 2942 次点击
    这是一个创建于 2019 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有如下字符串(文件是 xml 格式,在 CentOS7.5 的 OS 上):

    <node>
      <sub-node1>
      <!--  <some-string1 /> -->
      </sub-node1>
      <sub-node2>
        <!--
        <some-string2 />
        -->
      </sub-node2>
      <sub-node3>
        <!--
        <some-string3>
        -->
      </sub-node3>
      <sub-node4>
        <!-- <some-string3> -->
      </sub-node4>
    </node>
    

    我想把 <some-string3> 的注释去掉,可不可以用 sed -i 's/some-regex/some-string/g' 来实现?如果可以,怎么写呢?

    补充一下

    1. 条件字符串的注释可能是换行的,也可能在同一行;
    2. 这类文件非常多,并且操作是例行性的,写成脚本感觉比较方便一些;
    3. 如果可以,打算优先考虑 shell 脚本;
    whileFalse
        1
    whileFalse  
       2018-09-18 09:30:42 +08:00
    没明白,有两个 something3 ?
    Tumblr
        2
    Tumblr  
    OP
       2018-09-18 09:40:41 +08:00
    @whileFalse #1 是的,只删除 <some-string3>前后的注释,但是之前的配置文件里,注释和内容在同一行或不同行的都有(如主题中的子节点 3、子节点 4 )。
    其实不止有两个 <some-string3>,但只有这两种情况。
    yangg
        3
    yangg  
       2018-09-18 09:52:35 +08:00
    用操作 xml 的库
    Tumblr
        4
    Tumblr  
    OP
       2018-09-18 09:58:03 +08:00
    @yangg #3 您是说用 Python 么?如果用非 Shell 的脚本,选择倒是多一些,不过目前打算先尝试一下用 Shell 脚本直接操作。
    如果您是说 Shell 中的 xml lib,恕我愚钝,这块儿我并不太熟悉,可否指教?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4392 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:06 · PVG 18:06 · LAX 03:06 · JFK 06:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.