利用Shell解析处理XML的方法汇总

利用Shell解析处理XML的方法汇总

在Shell下解析XML文件有多种方法,这里对一些常用的做一个汇总。以下所有示例都基于以下的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
    <description>An in-depth look at creating applications 
      with XML.</description>
  </book>

  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
    <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
  </book>
</catalog>

使用grep和正则表达式解析XML

我们可以利用 grep 命令和正则表达式来解析 XML 文件中指定标签中的内容。下面的命令可以提取所有 author 标签中的内容:

$ grep '<author>.*</author>' example.xml | sed -e 's#<author>\(.*\)</author>#\1#'
Gambardella, Matthew
Ralls, Kim

其中 grep 命令根据正则表达式提取了所有 <author> 标签中的内容,然后使用 sed 命令删除了标签。

使用xmlstarlet解析XML

可以利用 xmlstarlet 解析 XML 文件。xmlstarlet 是一个命令行工具,可以用于检查、查询、编辑和根据 XML 文件创建命令行策略。

  • 使用以下命令可以打印出所有 author 标签的内容:
$ xmlstarlet sel -t -m "//author" -v . -n example.xml
Gambardella, Matthew
Ralls, Kim

其中 sel 命令表示查询(select)模式, -t 参数表示模板(template)模式, -m 参数表示匹配模式, //author 表示匹配所有 author 标签, -v . 表示输出标签中的内容, -n 表示输出后换行。

  • 使用以下命令可以打印出所有 book 标签中 id 属性值为 bk102titleprice 标签的内容:
$ xmlstarlet sel -t -m "//book[@id='bk102']" -v title -n -v price -n example.xml
Midnight Rain
5.95

其中 [@id='bk102'] 表示匹配 id 属性值为 bk102book 标签,-v 参数可以指定要输出的标签, -n 表示输出后换行。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Shell解析处理XML的方法汇总 - Python技术站

(1)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Java中构造、生成XML简明教程

    构造XML的基本概念 XML(Extensible Markup Language)是一种纯文本格式的标记语言,用于存储数据并且可以被多种应用程序解析和使用。在Java中,可以通过构造XML文件来实现数据的导出和存储等功能。 Java中生成XML的方法 在Java中生成XML可以采用dom4j、JDOM等XML库,本文以dom4j为例。需要引入的maven依…

    html 2023年5月30日
    00
  • .Net获取URL中文参数值的乱码问题解决方法总结

    首先,需要了解URL中文参数值的乱码问题的原因。在URL中,中文参数值的字节序列会被转义为%XX的形式,其中XX是中文字符的编码表示。但是在使用.Net的Http请求时,如果不指定字符编码方式,系统会默认使用UTF-8编码,而造成中文乱码的现象。 解决方法: 在发送Http请求时,需要手动指定字符编码方式为GB2312或者gbk,即在HttpWebReque…

    html 2023年5月31日
    00
  • Java中JDom解析XML_动力节点Java学院整理

    Java中JDom解析XML攻略 简介 JDom是一个使用Java语言开发的XML文档解析API,它允许用户在内存中不创建DOM模型的情况下,方便地操作XML文档。相比于传统的DOM和SAX,JDom具有易学、易用、灵活等特点,因此在Java开发中得到了广泛的使用。 操作步骤 导入JDom包。可以从网上下载得到JDom jar包,也可以通过Maven坐标引入…

    html 2023年5月30日
    00
  • HTML5新增的标签和属性归纳总结

    当HTML5标准发布之后,它为我们带来了更多的标签和属性,这些新的特性可以使我们更加方便地构建Web页面。下面我们对HTML5新增的标签和属性进行归纳总结。 HTML5新增的标签 语义化标签 HTML5中引入了许多语义化的标签,它们能够让网页的内容更加明确和易于理解。这些标签包括: <article>:定义文章、论坛贴子、博客等独立的内容单元。 …

    html 2023年5月30日
    00
  • 360随身WiFi 4G版怎么用?360随身WiFi 4G版使用体会

    以下是“360随身WiFi 4G版怎么用?360随身WiFi 4G版使用体会”的完整攻略: 360随身WiFi 4G版怎么用? 360随身WiFi 4G版是一款便携式无线路由器,可以将4G网络转换为WiFi信号,方便用户在任何地方使用WiFi。以下是使用360随身WiFi 4G版的步骤: 插入SIM卡:首先,将SIM卡插入360随身WiFi 4G版的SIM卡…

    html 2023年5月18日
    00
  • PHP将XML转数组过程详解

    这里我给你详细讲解一下“PHP将XML转数组过程详解”的完整攻略。 1. 什么是XML? XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言,使用语法类似于HTML,但比HTML还要灵活和可扩展。XML被广泛应用于数据交换、配置文件、Web服务等领域。 2. PHP中将XML转为数组的方法 在PH…

    html 2023年5月30日
    00
  • Android apk反编译基础(apktoos)图文教程

    首先我们来详细讲解“Android apk反编译基础(apktoos)图文教程”的完整攻略。 一、前言 在进行apk应用开发或分析的时候,我们有时候需要对apk进行反编译以获取其中的代码、资源等信息。这个时候,APKTool这个工具就非常有用。APKTool是一个可以反编译和重新打包APK的开源工具,可以将一个APK文件解包为一个文件夹,包括资源文件和编译后…

    html 2023年5月30日
    00
  • 怎么消除EV录屏噪音 EV录屏噪音大的去除方法

    以下是消除EV录屏噪音的攻略: EV录屏噪音大的去除方法 EV录屏是一款常用的屏幕录制软件,但是在录制过程中可能会出现噪音,影响录制效果。以下是消除EV录屏噪音的攻略: 调整麦克风设置:首先,打开EV录屏软件,进入“设置”页面。在“设置”页面中,找到“音频”选项,然后调整麦克风设置。您可以尝试调整麦克风的音量、增益等参数,以减少噪音。 使用降噪软件:如果调整…

    html 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部