例如,我有一个文件“a.xml”。在这个文件中只有一行
<queue><item><cause><item>
我想知道<item>出现了多少次,在本例中是2。如果我跑:
<item>
grep -c "<item>" a.xml
它只会给予我1,因为grep会在匹配第一个<item>时停止。所以问题是如何使用一个简单的shell/bash命令来返回<item>发生的次数?
mi7gmzs61#
您可以尝试以下操作:
grep -o "<item>" a.xml | wc -l
q7solyqu2#
如果你只是想单独计算'< item>',那么我喜欢MillaresRoo的grep -o解决方案。如果您希望更普遍地计算项目,请考虑:
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>
nwlls2ji3#
使用awk,你可以在一个命令中做到这一点:
awk -F '<item>' '{print NF-1}' a.xml
或获取整个文件使用的总计数:
awk -F '<item>' '{s+=NF-1}END{print s}' a.xml
3条答案
按热度按时间mi7gmzs61#
您可以尝试以下操作:
q7solyqu2#
如果你只是想单独计算'< item>',那么我喜欢MillaresRoo的
grep -o
解决方案。如果您希望更普遍地计算项目,请考虑:或者,在命令行上显式显示输入:
nwlls2ji3#
使用awk,你可以在一个命令中做到这一点:
在线演示:http://ideone.com/vheDgq
或获取整个文件使用的总计数: