shell解析xml文档
2013-09-30 16:41
316 查看
需要解析的源文件:
/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`
/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文档
- XML解析技术和使用Jaxp对xml文档进行dom解析
- 使用dom4j解析XML文档
- libxml 解析xml文档
- VC使用MSXML解析XML文档,例子代码
- libxml -- 解析 XML 文档
- 四种方法解析XML文档:Dom、SAX、JDOM、dom4j
- Dom4j解析和生成XML文档
- sax方式解析xml文档
- 探讨如何使用SimpleXML函数来加载和解析XML文档
- 解析XML可扩展性文档的方法
- xml 文档解析
- org.w3c.dom(java dom)解析XML文档
- Java 解析xml文档笔记(SAX,DOM,DOM4J)
- DOM解析XML文档个人小结
- 日常小结-DOM4J解析XML文档
- 利用VC++与MSXML解析XML文档
- DOM4J解析XML文档
- android解析xml文档的各种方法
- Java 中使用 SAX 解析 XML 文档