使用LinuxBash脚本从XML文件获取数据

使用LinuxBash脚本从XML文件获取数据,xml,linux,Xml,Linux,我有一个包含数据的XML文件,需要用LinuxBash脚本提取这些文件。例如,我需要括号中的所有内容,并相应地在终端中打印出来(第一个描述旁边的名字) 最好的方法是什么?我可以用c#使用XPath实现这一点,但我不能简单地用LinuxBash脚本实现这一点,对吗?我知道我可以用awk、sed、grep、cut等完成大部分工作,但我认为(实际上我知道我没有)做得很好。我曾经将描述数据提取到一个文件中,并将名称提取到一个文件中,但几个小时后,我意识到这不是最佳/正确的方法 它应该如何读取的示例如下

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

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

它应该如何读取的示例如下

  • 名称1-说明1
  • 名称2-说明2
  • 名称3-(空白)
  • 名称4-说明3
谢谢大家!

如果我能补充任何细节,让它更清楚,请让我知道!(工作了一整天,大脑有点发昏)

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


可用内存
可用内存定义为空闲+缓存+缓冲内存。

应如何读出:

<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>
可用内存-可用内存定义为空闲+缓存+缓冲内存。
另一个名字-另一个描述
另一个名字-另一个描述
另一个名字-另一个描述

您可以从bash启动
xpath
命令。它与Perl XML一起安装,允许您轻松地对标准输出执行任何XPath查询。

您可以从bash启动
XPath
命令。它与PerlXML一起安装,允许您轻松地对标准输出执行任何XPath查询。

command 输出
可用内存-可用内存定义为空闲+缓存+缓冲内存。
可用内存-可用内存定义为空闲+缓存+缓冲内存。
可用内存-可用内存定义为空闲+缓存+缓冲内存。
命令 输出
可用内存-可用内存定义为空闲+缓存+缓冲内存。
可用内存-可用内存定义为空闲+缓存+缓冲内存。
可用内存-可用内存定义为空闲+缓存+缓冲内存。

如果未安装xpath可执行文件,可以按如下方式安装:

cpan XML::XPath

这应该下载必要的Perl模块,并安装
xpath
二进制文件。

如果未安装
xpath
可执行文件,您可以这样安装它:

cpan XML::XPath

这应该下载必要的Perl模块,并安装
xpath
二进制文件。

示例XML数据将有用添加一个简化的XML示例示例示例XML数据将有用添加一个简化的XMLWell示例,我一直试图让它在Perl中工作,但我似乎无法让它工作(以前从未使用过Perl)。我知道仅使用Bash脚本就可以将其打印成这样。我真的只想使用Linux Bash脚本命令(而不是Perl或其他任何命令)@PolarisUser——你真的做到了。
xpath
是一个直接从Bash运行的命令行实用程序。你只需要知道在哪个包中可以找到它,以防它没有预先安装在你的系统上,这对我来说是一个惊喜。好吧,我现在已经掌握了使用xpath和Perl的所有数据,但我不能正如我所发布的:(@PolarisUser-您可以按照前面的问题(答案)进行操作,如果遇到任何其他问题,您可以返回:嗯,我一直在尝试用Perl实现它,但我似乎无法实现它(以前从未使用过Perl)。我知道只使用Bash脚本就可以这样打印。我只想使用Linux Bash脚本命令(而不是Perl或其他任何命令)@PolarisUser——你真的做到了。
xpath
是一个直接从Bash运行的命令行实用程序。你只需要知道在哪个包中可以找到它,以防它没有预先安装在你的系统上,这对我来说是一个惊喜。好吧,我现在已经掌握了使用xpath和Perl的所有数据,但我不能我似乎没有正确地格式化它,就像我发布的:(@PolarisUser-你可以按照前面的问题(答案)进行操作)如果你在其他的麻烦中跑回来的话,那就差不多了!!我得到了正确的工作,但是我的XML文件中的一些描述是空白的。有没有办法跳过空白的描述,以便它正确地显示?所以,几乎在那里!!!我让它正常工作,但是我的XML文件中的一些描述是空白的。有没有办法?它跳过空白描述,以便正确显示?
<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>
cpan XML::XPath