XML文件包含公司的部门和用户,旁边还有其他一些评论。用户数量不同,也是用户之后的最后一条评论:
<department="marketing" id="983343" >
<options="yes" />
<prefix="m" />
<country="de" />
<user="MaierM" />
.
.
.
<user="SchulzP" />
<success="yes" />
</department>
<department="sales" id="353934" >
<options="yes" />
<prefix="s" />
<country="at" />
<user="MullerS" />
.
.
.
<user="NowakA" />
<directory="direct" />
</department>
我的问题是:如果我想获得基于id(这里:983343)转储在变量中的部门用户数 - 什么是bash-command(不能使用Python)?另请注意,id可能存在于XML文件内的另一个点,具有不同的时间含义。
答案 0 :(得分:2)
var=`sed -n '/department=..* id="983343"/,/<\/department>/p' file | grep -c '<user="'`
首先,我告诉sed
在特定部门的开头和结束标记之间打印行。
结果通过管道传输到grep
,查找带有user
标记的行,但计算它们而不是打印它们(-c选项)。
整个命令放在反引号中,因此您可以使用命令替换将计数捕获到变量中。