Lon*_*don 11 python xml linux perl
我的xml看起来像这样:
<elements>
<elem>
....bunch of other elements
</elem>
</elements>
Run Code Online (Sandbox Code Playgroud)
有没有办法通过elemlinux shell计算某些xml文件中标记的出现次数?像perl/python或任何可能作为一个衬垫的东西?
我可能会尝试类似的东西grep -c "elem" myfile.xml和我得到的数字2并得到数字,是否有类似但一个班轮?
编辑:
我正在寻找替代的grep解决方案
Mar*_*air 15
该xml_grep工具可以满足您的需求 - 尝试以下方法:
xml_grep --count //elem example.xml
Run Code Online (Sandbox Code Playgroud)
该实用xml-twig-tools程序位于Debian/Ubuntu 的包中,文档在这里.
您还可以使用xmllint:
xmllint --xpath "count(//elem)" myfile.xml
Run Code Online (Sandbox Code Playgroud)
@OP,所有grep解决方案都有一个基本的“缺陷”,如果<elem>一行中有超过 1 个标签,它将错过计数。用于awk以编程方式计数
awk 'BEGIN{
totalelem=0
totalendelem=0
}
/<elem>/{
m = split($0,a,"<elem>") # or m = gsub(/<elem>/,"")
totalelem+=m-1
}
/<\/elem>/{
m = split($0,b,"</elem>") # or m = gsub("</elem>","")
totalendelem+=m-1
}
END{
print "Total elem tags: " totalelem
print "Total end elem tags: " totalendelem
# if you want to make sure each elem tag is enclosed by corresponding end elem tag
if ( totalelem == totalendelem ){
print "Equal start and end tags"
}
}
' file
Run Code Online (Sandbox Code Playgroud)
该解决方案假设您知道您的 elem 标签是什么样的。没有<elem />或者有额外属性的..