我有如下所示的 XML 文件,名为sample.xml
:
<m:properties>
<d:>ABCD</d:>
<d:>1234</d:>
<d:>0048</d:>
<d:>0.0</d:>
</m:properties>
<m:properties>
<d:>EFGH</d:>
<d:>5678</d:>
<d:>1111</d:>
<d:>9.0</d:>
</m:properties>
所需的输出是:
ABCD,1234,0048,0.0
EFGH,5678,1111,9.0
谁能帮我创建脚本吗?
答案1
假设 XML 包含在名为 的单个根标记中,root
使用类似的宽容 XML 解析器xq
(来自yq
https://kislyuk.github.io/yq/) 创建 CSV:
xq -r '.root."m:properties"[]."d:" | @csv' sample.xml
如果没有这样的封闭标签,那么我们可以动态添加一个:
{
echo '<root>'
cat sample.xml
echo '</root>'
} | xq -r '.root."m:properties"[]."d:" | @csv'
结果:
"ABCD","1234","0048","0.0"
"EFGH","5678","1111","9.0"