![]() |
1
61
你真的吗? 不得不 只使用那些工具?它们不是为XML处理而设计的,尽管大多数情况下可以得到一些正常工作的东西,但是在边缘情况下,它会失败,如编码、换行等。 我建议使用XML代码:
其输出:
在ubuntu/debian上,xml-grep在xml-twig-tools包中。 |
![]() |
2
12
|
![]() |
3
9
使用xmlstarlet:
|
![]() |
4
9
请不要使用基于行和regex的XML解析。这是个坏主意。您可以使用具有不同格式的语义相同的XML,并且regex和基于行的解析无法处理它。 像一元标记和变量行包装之类的东西-这些片段“说”同样的话:
希望这能清楚地说明为什么创建一个基于regex/行的解析器是困难的?幸运的是,你不需要。许多脚本语言至少有一个,有时还有更多的解析器选项。
正如之前的海报所暗示的那样-
例如。:
然而,为了更好地回答问题,这里有几个基于源数据的“自己滚动”示例: 第一种方式:
使用
将使用
因为它在“job”元素上匹配,所以它也将在嵌套的job元素上匹配:
将匹配两次,但某些输出也会打印两次。但是,你可以匹配
或者-先解析,然后根据结构“打印”:
作为
但我们可以更敏锐一点,寻找
你可以使用
有多种输出格式选项,但对于更简单的XML(如您的XML),大多数选项看起来非常相似。 |
![]() |
5
8
只需使用锥子,不需要其他外部工具。如果您想要的标签出现在多行中,下面的代码就可以工作。
|
![]() |
6
5
假设同一行,来自stdin的输入:
笔记:
|
![]() |
7
3
使用
塞德
命令:
例子:
说明:
接下来是替换部分
|
![]() |
8
0
怎么样:
|
![]() |
9
0
演出有点晚了。 xmlcutty 从XML中剪切节点:
这个
注意,XML开头无效(没有根元素)。XMLCutty也可以处理稍微有点破损的XML。 |