问题是这样的:
例如,我有一个文件“a.xml”。在这个文件中,它只是一行
<queue><item><cause><item>
我想知道<item>
发生了多少次,在这种情况下它是2.
但是,如果我跑:
grep -c "<item>" a.xml
它只会给我1,因为grep会在第一个<item>
匹配后立即停止。
所以我的问题是如何使用简单的shell / bash命令返回<item>
出现的次数?
看起来很简单但我找不到好的方法。有什么想法吗?
答案 0 :(得分:9)
您可以尝试以下方式:
grep -o "<item>" a.xml | wc -l
答案 1 :(得分:3)
使用awk可以在一个命令中执行此操作:
awk -F '<item>' '{print NF-1}' a.xml
要获取整个文件使用的总计数:
awk -F '<item>' '{s+=NF-1}END{print s}' a.xml
答案 2 :(得分:3)
如果你只想数'&lt;项&GT;”单独,然后我喜欢MillaresRoo的grep -o
解决方案。如果您想更频繁地计算项目,请考虑:
$ sed 's/></>\n</g' a.xml | sort | uniq -c
1 <cause>
2 <item>
1 <queue>
或者,在命令行上显式显示输入:
$ echo '<queue><item><cause><item>' | sed 's/></>\n</g' | sort | uniq -c
1 <cause>
2 <item>
1 <queue>