Linux 命令实现单词计数功能
来源:互联网 发布:windows自带放大镜 编辑:程序博客网 时间:2024/06/06 08:45
hadoop 的 mapreduce 有个入门的程序叫wordcount,相当于其它程序语言的helloworld,是用来统计输入文本中用指定分隔符切割后得到的每个单词的出现次数。
现在来说明在Linux中如何实现这一功能
1. 获取文件每一行的每个单词
这里用awk命令来实现
awk -F(指定分隔符,默认空格或Tab) '{ for(i=1;i<=NF; i++){ print $i }}' filename
2. 将获得的每个单词进行排序
这里用到sort命令和管道
3. 然后进行去重操作
uniq -c 可以去重并显示出现的次数
例子: 我的文件是 hello.txt
.......$ cat hello.txt HELLO WORLD WELCOME MY ZONEHELLO HADOOP MY JOBHELLO HADOOP HADOOP WORLD MY ZONE HELLO A B C
用命令
awk '{ for(i=1;i<=NF; i++){ print $i }}' hello.txt | sort | uniq -c
结果
1 A 1 B 1 C 3 HADOOP 4 HELLO 1 JOB 3 MY 1 WELCOME 2 WORLD 2 ZONE
这样就简单的实现了一个单词计数的功能。
如果想单词在前数字在后,可以再次使用awk命令
awk '{ for(i=1;i<=NF; i++){ print $i }}' hello.txt | sort | uniq -c | awk '{print $2,$1}'
结果
A 1B 1C 1HADOOP 3HELLO 4JOB 1MY 3WELCOME 1WORLD 2ZONE 2
当然如果想要输出美观,可以用awk的格式化输出 printf
现在我想统计一下单词出现最多的前三个该怎么办?当然就是按出现次数倒序sort,然后head -3
awk '{for(i=1;i<=NF;i++){print $i}}' hello.txt | sort | uniq -c | awk '{print $2,$1}' | sort -t ' ' -k2nr | head -3
结果
HELLO 4HADOOP 3MY 3
至于大文件运行效率如何,我觉得肯定是mapreduce更好。这个统计小文件应该还行。如果有不合理的地方,还请老鸟指正出来,谢谢。
0 0
- Linux 命令实现单词计数功能
- 013-通过trident实现单词计数功能
- storm trident实现单词计数
- Spark实现WordCount单词计数
- C语言二叉排序树单词计数程序实现
- python实现单词计数的mapreduce
- scala 两种方法实现单词计数
- spark1.6.1入门api实现单词计数
- 使用Scala实现文件单词计数
- Linux 单词计数 WordCount 以及代码案例
- 单词计数
- 单词计数
- 单词计数
- 单词计数
- 单词计数
- 单词计数
- 单词计数
- 单词计数
- tableHeaderView中的button点击事件不响应
- putty 下 sqlite3 输出的中文乱码解决办法
- python源代码剖析--读书笔记:第1章 Python内建对象
- 设计模式(八)过滤器模式
- Web-常见错误整理
- Linux 命令实现单词计数功能
- Codeforces Round #403 (Div. 2) C. Andryusha and Colored Balloons DFS
- java通过smtp发送qq邮件详细步骤
- 机器学习实战--chapter 1
- JavaScript正则表达式
- Tomcat 8.x 的 init、load、start
- 数组倒置
- URLError: <urlopen error EOF occurred in violation of protocol (_ssl.c:590)>
- Qt写文件测试