linux 统计关键字在文件中出现的次数

  方法一:

    grep -o '\(关键字1\|关键字2|关键字3\)' ur_log_file | awk '{a[$0]++} END{for (i in a) {print i"\t"a[i]; }}' | sort -nr -k2

     按次数降序排的 ,要求关键词间没有包含关系。

方法二:

问题:

 UNIX/Linux里如何统计文件里某个字符出现的次数?例如在文件mydoc.txt中,字符A出现了几次?

解答:

 perl -e 'while(<>)  {$count+= s/关键词//g;}   print "$count"; '   filename

解释:

 perl -e ‘xxxxx……’ 表示执行单引号中的指令

filename 表示要处理的对象是filename,也就是我们需要统计的文件

while(<>):每次读出文件的一行,直到文件结束。读取出来的内容放入默认变量$_中。

s/A//g:把默认变量($_,就是上面读出来的)中的A字符全部(g)替换为空。这个语句返回的结果是替换成功的次数。

$count+ = s/A//g:把替换成功的次数记录在$count中。

Pint $count: 打印总的次数

把以上放在一起就是:每次读取文件中的一行,计算其中字符A出现的次数,并累加到变量$count中。最后打印出来。

如果想统计其他的字符,直接修改A为需要统计的就可以了。

更进一步:

如果要统计各个字符出现次数,如何实现?

解答:

perl -e ‘ $/=undef;$_=<>; printf "$&:%dn", s/$&//g while /S/; ’  filename

解释:

 建议参考perl文档中perlvar部分。

 

经过粗略的测试: 一个文本里有关键词12W,  如果用方法一,需要10秒左右, ,用方法二基本上不需要一秒..多以从速度上来说,方法二快N多

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值