计算每行的模式发生

时间:2014-02-13 20:09:54

标签: 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

期望的输出:

string1 string2 2  
string3 string4 3  
string5 string6 4

有什么建议吗?

2 个答案:

答案 0 :(得分:12)

使用awk

awk '{print $1,$2,gsub(/word/,"")}' file
string1 string2 2
string3 string4 3
string5 string6 4

解释

  • gsub()函数返回所做的替换次数。

答案 1 :(得分:2)

我忽略了,这里是用awk做的:

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