shell 使用grep来计算一个单词在文件中重复的次数

cnh2zyt3  于 2023-06-06  发布在  Shell
关注(0)|答案(3)|浏览(197)

例如,我有一个文件“a.xml”。在这个文件中只有一行

<queue><item><cause><item>

我想知道<item>出现了多少次,在本例中是2。
如果我跑:

grep -c "<item>" a.xml

它只会给予我1,因为grep会在匹配第一个<item>时停止。
所以问题是如何使用一个简单的shell/bash命令来返回<item>发生的次数?

mi7gmzs6

mi7gmzs61#

您可以尝试以下操作:

grep -o "<item>" a.xml | wc -l
q7solyqu

q7solyqu2#

如果你只是想单独计算'< item>',那么我喜欢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>
nwlls2ji

nwlls2ji3#

使用awk,你可以在一个命令中做到这一点:

awk -F '<item>' '{print NF-1}' a.xml

在线演示:http://ideone.com/vheDgq

或获取整个文件使用的总计数:

awk -F '<item>' '{s+=NF-1}END{print s}' a.xml

相关问题