我正在DOS上使用sed
来提取2个标记之间的XML文件的内容。
除了一件小事之外,效果很好...
我不想显示正在搜索的标签的行。
这是我的工作:
sed -n "/<ITEMS/,/<\/ITEMS/p" 1.xml
我唯一关心的是它还会显示包含<ITEMS>
的2行。
解决方案就在附近,但是我需要一些帮助!
答案 0 :(得分:0)
您在这里:
echo "<foo>
<bar>
<item>
line 1
line 2
</item>" | sed -n '/<item/,/<\/item/ p'
<item>
line 1
line 2
</item>
您想要的是
echo "<foo>
<bar>
<item>
line 1
line 2
</item>" | sed -n '/<item/,/<\/item/ {//! p}'
line 1
line 2
这里有些棘手的地方是{//! p}
-空的正则表达式//
与 previous 正则表达式匹配。如果先前的正则表达式与不匹配不匹配,请打印该行。
一个用正则表达式无法解析XML的例子:嵌套标签:
echo "<foo>
<bar>
<item>
line 1
line 2
</item>
<item>
line 3
<item>
line 4
</item>
line 5
</item>
" | sed -n '/<item/,/<\/item/ {//!p}'
line 1
line 2
line 3
<item>
line 4