统计特定文件中的词频

查找文件中使用的单词的频率是一件很有意思的事情,下面,我们利用 关联数组,awk,sed,grep 等不 同的方式来解决问题。

首先,我们需要一个测试用的文本,保存名为  word.txt

内容如 下:

Word used
this  counting
this

接下来需要编写Shell脚本程序,如下所示:

#!/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命令用来避免对每一个单词进行迭代

下面给出运行的截图:

关于awk命令请 参考博主的其他博客。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索词频统计
, awk
, count
, 单词
, filename
, alpha
, 词频
, 一个
c语言词频统计
词频统计、中文词频统计、词频统计工具、词频统计软件、python 统计词频,以便于您获取更多的相关知识。

时间: 2024-11-10 00:13:47

统计特定文件中的词频的相关文章

如何统计CS文件中公有类,私有类,受保护类的个数?

问题描述 1.如何统计CS文件中公有类,私有类,受保护类的个数?并同时统计出每个类的代码行数?2.publicclassA{publicclassB{}}这种情况只对A计数一次 解决方案 解决方案二:统计的前提是代码可以正确编译先用CSharpCodeProvider编译成Assembly然后反射出你要统计的类解决方案三:没有人知道吗??

python脚本实现统计日志文件中的ip访问次数代码分享_python

适用的日志格式: 106.45.185.214 - - [06/Aug/2014:07:38:59 +0800] "GET / HTTP/1.0" 200 10 "-" "-" 171.104.119.22 - - [06/Aug/2014:08:55:01 +0800] "GET / HTTP/1.0" 200 10 "-" "-" 27.31.238.242 - - [06/Aug/

java简单统计.java文件中的有效代码行,空行,注释行

package regxdemo; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class CountFile { /** * @param args */ static int cntCode=0, cntNode=0, cntSpace

Linux统计文件中指定字符串个数的2种方法

  统计一个文件中某个字符串的个数,其实就像在一块沙地里面找一块石头,有的人看到石头以后,在上面做个标记(grep),然后记住自己做了多少个标记;有的人看到石头以后,把它跳过去(awk),然后统计自己跳了多少次. 方法1: grep 代码如下: grep -o 'keyword' my_file.txt | wc -l 方法2: awk 代码如下: awk -v RS='keyword' 'END {print –NR}' my_file.txt

c++-用C++读取文件中特定行的某几列数据并输出到另一个文件

问题描述 用C++读取文件中特定行的某几列数据并输出到另一个文件 AR ZIMM 2014 06 30 00 00 0.000000 2 2.175456910513e-08 1.929140019560e-11AR ZWE2 2014 06 30 00 00 0.000000 2 -6.930289135325e-03 2.317673679230e-11AS G01 2014 06 30 00 00 0.000000 2 1.652894267903e-05 1.737915981300e-

如何让windows 8.1资源管理器的skydrive中特定文件夹不显示

  1.打开资源管理器中的skydrive,找到不希望被显示的特定文件夹,右键该文件夹并选择属性, 将其属性改为隐藏,完成设置后即可看到该文件夹不再显示.但是如果你对文件夹的选项进行过修改,你需要确保如下图红色区域勾选的设置.

用C语言实现统计一个文件夹中各种文件的比例

原文:用C语言实现统计一个文件夹中各种文件的比例 <UNIX环境高级编程>中的程序清单4-7就介绍了如何实现递归地统计某个目录下面的文件!我刚开始看过它的代码后,觉得照着敲太没意思了,所以就合上书自己写了一遍!为此还写了一篇博文,这是博文地址:在linux下用C语言实现递归查看某个目录中的所有文件[CSDN]! 今天做<Unix环境高级编程>的课后题,看到题目4.11这里提供了一种新的实现这个程序的思路,那就是每回读到一个目录,就通过chdir函数进入到这个目录,然后再通过open

matlab中如何提取数据文件中的特定行和列?

问题描述 matlab中如何提取数据文件中的特定行和列? 一个数据文件,我想提取它的第一到第四列,以及第九列 和第1到500行,以及501到1000行? 解决方案 data = []; data = original(:,1:4);其他类似

java-将几个带有属性的对象写入特定文件,如何从这个文件中删除某一个对象呢?

问题描述 将几个带有属性的对象写入特定文件,如何从这个文件中删除某一个对象呢? 如下通过序列化,键盘输入十个对象的信息 try { ObjectInputStream is = new ObjectInputStream(new FileInputStream(new File("D:/File/file.txt"))); for(int i=0;i<n;i++){ try { Member member1 = (Member)is.readObject(); System.ou