Regex 每行计数模式出现次数

Regex 每行计数模式出现次数,regex,unix,sed,awk,Regex,Unix,Sed,Awk,所需的输出为每行保留前两个“列”,并在同一行上添加“word”的出现次数 输入: string1 string2 aaaaaaaaa word aaaaaaaa word string3 string4 ccccccccccc word dddaaaaaaacccd word dddddaaaaa word bbbb string5 string6 aaaa word bbbbbbaddd word aaaaa word ccccccdddddddddd word cccccc 期望输

所需的输出为每行保留前两个“列”,并在同一行上添加“word”的出现次数

输入:

string1 string2 aaaaaaaaa word aaaaaaaa word  
string3 string4 ccccccccccc word dddaaaaaaacccd word dddddaaaaa word bbbb  
string5 string6 aaaa word bbbbbbaddd word aaaaa word ccccccdddddddddd word cccccc
期望输出:

string1 string2 2  
string3 string4 3  
string5 string6 4
有什么建议吗?

我忽略了,以下是如何使用awk:

awk '{count=0; 
      for(i=3; i <= NF; i++) {if($i=="word") { count++ }}; 
      print $1, $2, count; }' inputfile
awk'{count=0;
对于(i=3;i使用awk

awk '{print $1,$2,gsub(/word/,"")}' file
string1 string2 2
string3 string4 3
string5 string6 4
解释
  • 函数的作用是:返回替换的次数

+1非常聪明!您可能想使用
/\/
来确保它不计算包含单词的单词。很好且简单的方法。谢谢!这种“gsub”方法确实是一种简单而有效的解决方案!如果第1行是
string1 string2 aawordaaaaaaaaaaaaaa word
,那么该行的输出计数是2还是3?如果
word>呢
作为string1或string2的一部分出现?