我有一个包含如下数据的文件:
<root>
<x>
<y lang="en">
<z>1</z>
<z>2</z>
<z>3</z>
<z>4</z>
<t>5</t>
</y>
</x>
<x>
<y lang="en">
<z>a</z>
<z>b</z>
<t>c</t>
</y>
</x>
</root>
我想把它们打印如下
1 2 3 4 5
A、b、c
第一个有4z和1t,第二个有2z和1t。因为xargs不是静态的,所以我不能像我想要的那样打印它们。我尝试了一个脚本,如下所示:文件为$f:
xmllint --xpath "//root/x/y/z/node() | //root/x/y/t/node()" $f | xargs -n2
我得到的结果是:
1 2
3 4
5 a
B c
如果你有什么想法,我会很高兴的。
发布于 2021-05-22 20:26:20
尝试:
xidel file.xml -e '//x/string-join(./y/*/.," ")'
我使用xml得到的输出如下:
1 2 3 4 5
a b c
发布于 2021-05-22 21:31:16
另一种选择是使用sel
(select) option of xmlstarlet...
xmlstarlet sel -t -m "//y" -v "normalize-space()" -n input.xml
发布于 2021-05-22 20:00:16
尝尝这个
xmllint --xpath "//x/y/*/node()" $f | xargs -n2
https://stackoverflow.com/questions/67648604
复制相似问题