需要解析的源文件:

/tmp/cameralist :

<?xml version="1.0" encoding="UTF-8"?>
<cameralist>
  <camera brand="virtual camera" ip="192.168.1.17" mac="000000000000" hasAudio="no" hasVideo="yes">
    <url codec="m4v">rtsp://192.168.1.17:5554/ipcam1.m4v</url>
  </camera>
  <camera brand="virtual camera" ip="192.168.1.17" mac="000000000000" hasAudio="no" hasVideo="yes">
    <url codec="m4v">rtsp://192.168.1.17:5554/ipcam2.m4v</url>
  </camera>
  <camera brand="virtual camera" ip="192.168.1.17" mac="000000000000" hasAudio="no" hasVideo="yes">
    <url codec="m4v">rtsp://192.168.1.17:5554/ipcam3.m4v</url>
  </camera>
  <camera brand="virtual camera" ip="192.168.1.17" mac="000000000000" hasAudio="no" hasVideo="yes">
    <url codec="m4v">rtsp://192.168.1.17:5554/ipcam4.m4v</url>
  </camera>
  <camera brand="virtual camera" ip="192.168.1.17" mac="000000000000" hasAudio="no" hasVideo="yes">
    <url codec="m4v">rtsp://192.168.1.17:5554/ipcam5.m4v</url>
  </camera>
  <camera brand="virtual camera" ip="192.168.1.17" mac="000000000000" hasAudio="no" hasVideo="yes">
    <url codec="m4v">rtsp://192.168.1.17:5554/ipcam6.m4v</url>
  </camera>
</cameralist>

1.取得brand字段的内容:(value中可以有空格)

grep -Eo "brand=/".+/"" /tmp/cameralist | awk -F/" '{print $2}'

结果为

virtual camera
virtual camera
virtual camera
virtual camera
virtual camera
virtual camera
AXIS M1011-W

2..取得brand字段的内容:(value不可以有空格,有空格则返回值为空,如果没有空格返回值正常)

grep -Eo "brand=/"[^ ]+/"" /tmp/cameralist | awk -F/" '{print $2}'

结果为空

如果grep -Eo "ip=/"[^ ]+/"" /tmp/cameralist | awk -F/" '{print $2}'

192.168.1.17
192.168.1.17
192.168.1.17
192.168.1.17
192.168.1.17
192.168.1.17
192.168.1.103

3.取得xml文档中含有virtual的行数

v_num=`awk -v RS='virtual' 'END{print NR-1}' /tmp/cameralist`

shell解析xml文档的更多相关文章

  1. 网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档,视频项目

    小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心: ...

  2. 使用dom4j解析XML文档

    dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...

  3. 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

    众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...

  4. java解析xml文档(dom)

    DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...

  5. java 解析XML文档

    Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...

  6. DOM生成XML文档与解析XML文档(JUNIT测试)

    package cn.liuning.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.D ...

  7. [置顶] stax解析xml文档的6种方式

    原文链接:http://blog.csdn.net/u011593278/article/details/9745271 stax解析xml文档的方式: 基于光标的查询: 基于迭代模型的查找: 基于过 ...

  8. Objective-C ,ios,iphone开发基础:使用GDataXML解析XML文档,(libxml/tree.h not found 错误解决方案)

    使用GDataXML解析XML文档 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用第三方的库,原因是解析效率更高.使用上更方便 这里主要介绍一下 ...

  9. 浅谈用java解析xml文档(四)

    继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...

  10. 浅谈用java解析xml文档(三)

    接上一篇,本文介绍使用JDOM解析xml文档, 首先我们还是应该知道JDOM从何而来,是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初, JDOM作 ...

随机推荐

  1. Python数据分析易错知识点归纳(三):Pandas

    三.pandas 不带括号的基本属性 df.index # 结果是一个Index对象, 可以使用等号重新赋值,如: df.index = ['a', 'b', 'c'] df.columns # 结果 ...

  2. kafka分区分配策略

    前言 现有主流消息中间件都是生产者-消费者模型,主要角色都是:Producer -> Broker -> Consumer,上手起来非常简单,但仍有需要知识点需要我们关注,才能避免一些错误 ...

  3. React:styled-components有趣的用法

    背景 用于记录一些styled-components的有趣的用法 绑定a标签的链接 编写伪类 在styleComponents中使用参数 传入参数

  4. Designer属性编辑器简介

    objectName,控件对象名称. ● geometry,相对坐标系. ● sizePolicy,控件大小策略. ● minimumSize,最小宽度.高度. ● maximumSize,最大宽度. ...

  5. Cilium系列-9-主机路由切换为基于 BPF 的模式

    系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...

  6. asp.net core之HttpClient

    本文介绍了ASP.NET Core中的HttpClient和HttpClientFactory的作用.用法以及最佳实践.通过示例代码的展示,读者可以了解如何使用HttpClient发送HTTP请求并处 ...

  7. java if switch

    强制类型转换 注意事项:大的转小的需要强制转换 例如: double b=3.4 int小于double所以想让int=b,要在b后面加个(int)b. int a=(int)b    得到3 因为大 ...

  8. 【技术积累】Linux中的命令行【理论篇】【八】

    basename命令 命令介绍 在Linux中,basename命令用于从给定的路径中提取文件名或目录名.它的语法如下: basename [选项] [路径] 命令介绍 选项:-s, --suffix ...

  9. servlet系列:简介和基本使用以及工作流程

    目录 一.简介 二.Servlet实现 三.基本使用 1.引入pom依赖 2.实现Servlet规范,重写service方法 3.配置web.xml 4.配置Tomcat 6.运行 四.Servlet ...

  10. 【Hexo】插件推荐以及使用小技巧

    目录 插件推荐 hexo-deployer-git hexo-word-counter hexo-abbrlink hexo-generator-sitemap 小技巧 自定义提交信息 参考资料 He ...