我有这个简单的 xml 文件。我知道 sed 或 awk 不是最好的选择,但我仅限于使用这些。
<testcase classname="i1" name="item1"/>
<testcase classname="i2" name="item2">
<failure message="value2">
</failure>
</testcase>
<testcase classname="i3" name="item3"/>
如您所见,有些是自封闭的(如第 1 项、第 3 项),有些包含<failure>
标签。当且仅当内部有标签时,
我想获取第一个测试用例标签的属性。
此示例的预期结果应该是.
我使用的是:name
<failure>
item2
sed -rn 's#.*[<testcase].*[ ]name=[\"]([0-9a-zA-Z_]+)[\" ].*[<failure message=][\"]([0-9a-zA-Z_]+)[\" ].*[<\/failure>].*[<\/testcase>]#\1#p' file.xml
这真的不是正则表达式的聪明用途,但有时我会得到奇怪的结果。
我是否在正确的方向来解决这个问题?谢谢!
编辑:添加了类名属性,因为选择的答案让我显示了两个打印行
i2
i2
代替item2