gpt4 book ai didi

xml - 使用 Linux Bash 脚本从 XML 文件中获取数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:33 24 4
gpt4 key购买 nike

我有一个 XML 文件,其中包含我需要使用 Linux Bash 脚本提取的数据。例如,我需要括号中的所有内容并相应地在终端中打印出来(第一个描述旁边的名字)。

最好的方法是什么?我能够使用 XPath 使用 c# 来完成它,但是我不能仅仅使用 Linux Bash 脚本来完成它,对吗?我知道我可以用 awk、sed、grep、cut 等来完成大部分工作,但我认为(实际上我知道我没有)做得很好。我当时正在将描述数据提取到文件并将名称提取到文件,但几个小时后,我意识到这不是最好/正确的方法。

它应该如何阅读的例子是。

  • 姓名1 - 描述1
  • 姓名2 - 描述2
  • 姓名 3 -(空白)
  • 姓名4 - 描述3

谢谢!

如果我可以添加任何细节以使其更清楚,请告诉我! (忙了一天脑子有点炸了)

示例 XML(将其简化为一个实例)

<zabbix_export>
<templates>
<template>
<items>
<item>
<name>Available memory</name>
<description>Available memory is defined as free+cached+buffers memory.</description>
</item>
</items>
</template>
<templates>

应该如何读出:

<name>Available memory</name> - <description>Available memory is defined as free+cached+buffers memory.</description>
<name>Another Name</name> - <description>Another Description</description>
<name>Another Name</name> - <description>Another Description</description>
<name>Another Name</name> - <description>Another Description</description>

最佳答案

命令

xmlstarlet sel -t -m '//item/*' -c . -n input.xml |
sed '2~2s/$/\n/' |
awk -F'\n' -vRS='' '{print $1" - "$2}'

输出

<name>Available memory</name> - <description>Available memory is defined as free+cached+buffers memory.</description>
<name>Available memory</name> - <description>Available memory is defined as free+cached+buffers memory.</description>
<name>Available memory</name> - <description>Available memory is defined as free+cached+buffers memory.</description>

关于xml - 使用 Linux Bash 脚本从 XML 文件中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com