我面临的问题似乎对我来说太复杂了。因此,我希望在这里获得帮助是我最后的机会。
我的客户公司正在使用一个巨大的XML文件,其中包含测试部门,包括这些测试部门的用户等。一个名为“Fighters”的部门的摘录看起来如下(复制1:1(但名称和数字不同)):
<department name="/fighters" id="123879" group="channel" case="none" use="no">
<options index_name="index.html" listing="0" sum="no" allowed="no" />
<target prefix="ttp" suffix=".net" />
<type="effort">
<region="20491" readonly="fs1a" readwrite="fs1a" upload="yes" download="yes" repl="yes" hard="0" soft"0" prio="0" write="no" stage="yes" migrate="no" size="0" >
<read="content" readwrite="content" hard="215822106624" soft="237296943104" prio="5" write="yes" stage="yes" migrate="no" size="0" />
<overflow name="20491-set-writable" />
</replicate>
<region="20576" readonly="fs1a" readwrite="fs1a" upload="yes" download="yes" repl="yes" hard="0" soft"0" prio="0" write="no" stage="yes" migrate="no" size="0" >
<read="content" readwrite="content" hard="215822106624" soft="237296943104" prio="5" write="yes" stage="yes" migrate="no" size="0" />
<overflow name="20576-set-writable" />
</replicate>
</replication>
<user="T:106603" />
<user="T:123879" />
<user="test" />
<user="ele::123456" />
<user="company-temp" />
<user="companymw2" />
<user="bird" />
<user="coding11" />
<user="plazamedia" />
<allow go="123456=abcdefghijklmnopqrstuvwxyz" />
每个测试部门都面临一个唯一的ID(此处为123879
)。用户可以拥有昵称(如coding11
)或是真实昵称(如bird
)。
所以我希望得到所有用户 - 但不是用户“测试”(似乎一直存在) - 只需搜索department-id就可以存储在变量中(可能设置为数组)。命令如何看起来如此详细?
注意:部门和地区的用户数量各不相同。
答案 0 :(得分:0)
您有机会bash scripting
:
awk -F'"' '/<user=/{ print $2 }' input.xml
(OR)
sed -e '/^<user/!{d}' -e '/^<user/s/^.*"\([^"]\+\)".*/\1/' input.xml
您的xml文件格式不正确,但TOTALY 为什么不使用python执行此类任务?
这是快速准确的...... 你可以尝试:
#!/bin/python
import sys
import xml.etree.ElementTree as ET
import commands
input = sys.argv[1]
output = sys.argv[2]
tree = ET.parse(input)
root = tree.getroot()
for <something> in root.findall('<Start From Here>'):
.
.
.