sed解析xml文件的问题

RoxPro 2011-06-20 04:35:34
大家好,最近在做一个项目,想以最简单的方法解析一个XML文件,所以在别人的指导下写了一段代码。
我的xml文件如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note xmlns="RoxPro" xmlns:xsi="C:/Users/RoxPro/My Documents/" xsi:schemaLocation="RoxPro C:\Users\RoxPro\Documents\conf1.xsd">
<conf>
<network>
<config_interface_loopback>
<option>
<ifname>lo</ifname>
<proto>static</proto>
<ipaddr>127.0.0.1</ipaddr>
<netmask>255.0.0.0</netmask>
</option>
</config_interface_loopback>
<config_interface_lan>
<option>
<ifname>eth0</ifname>
<type>bridge</type>
<proto>static</proto>
<ipaddr>192.168.1.1</ipaddr>
<netmask>255.255.255.0</netmask>
</option>
</config_interface_lan>
<config_interface_wifi>
<option>
<proto>static</proto>
<ipaddr>192.168.2.1</ipaddr>
<netmask>255.255.255.0</netmask>
</option>
</config_interface_wifi>
</network>
<wireless>
<config_wifi-device_radio0>
<option>
<type>atheros</type>
<channel>auto</channel>
<macaddr>00:15:6d:fc:71:ac</macaddr>
<disable>0</disable>
</option>
</config_wifi-device_radio0>
<config_wifi-iface>
<option>
<device>radio0</device>
<network>wifi</network>
<mode>ap</mode>
<ssid>OpenWrt</ssid>
<encryption>none</encryption>
</option>
</config_wifi-iface>
</wireless>
</conf>
</note>


我需要解析这个XML文件,从而生成2个文件——network和wireless.内容如下,network:
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0

config interface lan
option ifname eth0
option type bridge
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0

config interface wifi
option proto static
option ipaddr 192.168.2.1
option netmask 255.255.255.0


和wireless:
config wifi-device  radio0
option type atheros
option channel auto
option macaddr 00:15:6d:fc:71:ac

# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 0

config wifi-iface
option device radio0
option network wifi
option mode ap
option ssid OpenWrt
option encryption none


所以在指导下我用写了sed写了如下内容:
创建XML_net.sh
#!/usr/bin/ksh
sed -n -e '\@<network>@,\@</network>@p' -e '\@</network>@q' XML_file > XML.net
sed -f XML_net_sed XML.net


创建XML_net_sed文件:
 
s#</.*>##
/^ *$/d
\@<network>@d
\@<option>@d
s/<//;s/>/ /
/config/!s/\([a-z]\)/option \1/


然后运行XML_net.sh

但是无法运行,显示:

root@roxpro-laptop:/home/roxpro/桌面# XML_net.sh conf.xml
XML_net.sh:找不到命令

请问哪里出错了?怎么解决,谢谢!

...全文
127 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
RoxPro 2011-06-20
对不起,以后我一定注意!
[Quote=引用 10 楼 abao623660072 的回复:]

引用 2 楼 abao623660072 的回复:
错了,chmod +x



这个不值得给分吗?

算了,
[/Quote]
回复
金刚葫芦娃 2011-06-20
[Quote=引用 2 楼 abao623660072 的回复:]
错了,chmod +x
[/Quote]


这个不值得给分吗?

算了,
回复
RoxPro 2011-06-20
我分给了啊,justkk对我有帮助,我的分给他了啊~~
[Quote=引用 8 楼 abao623660072 的回复:]

楼主,你这样以后还有人回你贴吗?
有帮助都不给分.
[/Quote]
回复
金刚葫芦娃 2011-06-20
楼主,你这样以后还有人回你贴吗?
有帮助都不给分.
回复
RoxPro 2011-06-20
Ok,感谢之至啊~~
[Quote=引用 6 楼 justkk 的回复:]

这样?
sh ./XML_net.sh conf.xml > network
[/Quote]
回复
justkk 2011-06-20
这样?
sh ./XML_net.sh conf.xml > network
回复
RoxPro 2011-06-20
谢谢,不过楼下的方法解决了问题,还有个问题,现在我写的code只能让我的conf文件显示出来,我怎么利用vi把这些文件写到network这个文件里面呢?
[Quote=引用 2 楼 abao623660072 的回复:]

错了,chmod +x
[/Quote]
回复
RoxPro 2011-06-20
现在我写的code只能让我的conf文件显示出来,我怎么利用vi把这些文件写到network这个文件里面呢?
[Quote=引用 3 楼 justkk 的回复:]

sh ./XML_net.sh conf.xml
[/Quote]
回复
justkk 2011-06-20
sh ./XML_net.sh conf.xml
回复
金刚葫芦娃 2011-06-20
错了,chmod +x
回复
金刚葫芦娃 2011-06-20
chomd +x XML_net.sh
然后运行 ./XML_net.sh
回复
相关推荐
发帖
智能路由器
创建于2018-06-15

638

社区成员

智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
申请成为版主
帖子事件
创建了帖子
2011-06-20 04:35
社区公告
暂无公告