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

2018-09-18 01:00:21 +08:00
 Tumblr

有如下字符串(文件是 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 脚本;
3044 次点击
所在节点    正则表达式
4 条回复
whileFalse
2018-09-18 09:30:42 +08:00
没明白,有两个 something3 ?
Tumblr
2018-09-18 09:40:41 +08:00
@whileFalse #1 是的,只删除 <some-string3>前后的注释,但是之前的配置文件里,注释和内容在同一行或不同行的都有(如主题中的子节点 3、子节点 4 )。
其实不止有两个 <some-string3>,但只有这两种情况。
yangg
2018-09-18 09:52:35 +08:00
用操作 xml 的库
Tumblr
2018-09-18 09:58:03 +08:00
@yangg #3 您是说用 Python 么?如果用非 Shell 的脚本,选择倒是多一些,不过目前打算先尝试一下用 Shell 脚本直接操作。
如果您是说 Shell 中的 xml lib,恕我愚钝,这块儿我并不太熟悉,可否指教?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/490275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX