我有一个如下的 xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<UnitReport Qunatity="163" start-time="2012-06-22T07:00:01+00:00">
<Station guid="59A7C775-7A2F-4ABD-BD10-B82614D5B846">
<Property>
<ValueString name="StationType">HDA</ValueString>
</Property>
</Station>
<Operator name="Generic"/>
<Category name="NB HDD">
<Product part-no="04MJKG" serial-no="04MJKG26402313A00"/>
</Category>
<Property>
<ValueString name="Manufacturer Name">JAX</ValueString>
<ValueString name="Manufacturing Site">TXN</ValueString>
</Property>
<TestRun start-time="2012-06-22T07:00:01+00:00" grade="Pass" name="HDA">
<Property>
<ValueString name="Manufacturers_Part_Number">MQ01ABF050</ValueString>
</Property>
</TestRun>
</UnitReport>
在 UNIX shell 脚本中,我需要从 XML 字段中提取 ValueString 标签的值,其中名称为 StationType。根据每个 StationType 值,我需要创建 zip 文件。请帮帮我。
答案1
尝试这个:
sed -n '/StationType/{s!<ValueString name="StationType">\(.*\)</ValueString>!\1!;p}' input.xml
您确实应该使用真正的 XML 解析器,但我不知道有任何基于命令行的解析器。如果 ValueString 元素跨越多行,则上面的正则表达式将中断。