Linux:统计文件词频

来源:互联网 发布:网络安全法的特征 编辑:程序博客网 时间:2024/06/05 08:03

#!/bin/bash  #Name: word_freq.sh  #Description: Find out frequency of words in a file    if [ $# -ne 1 ];  then      echo "Usage: $0 filename";      exit -1  fi    filename=$1    egrep -o "\b[[:alpha:]]+\b" $filename | \    awk '{ count[$0]++ } END{ printf("%-14s%s\n","Word","Count") ; \   for(ind in count) { printf("%-14s%d\n",ind,count[ind]); } }'  


工作原理介绍:
1.egrep -o "\b[[:alpha:]]+\b" $filename 用来只输出单词,用 -o 选项打印出由换行符分割的匹配字符序列,这样我们就可以在每行中列出一个单词
2.\b 是单词边界标记符。[:alpha:] 是表示字母的字符类
3.awk命令用来避免对每一个单词进行迭代


1.egrep默认支持正则表达式,grep默认不支持。

2.   awk'{pattern + action}' {filenames}

awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。






0 0
原创粉丝点击