利用shell实现WordCount

简介:   Shell脚本编程是Linux系统最为核心的技术之一,它能够利用简单的命令来实现一些复杂的功能,同时,由于Linux提供了很多文本处理命令,如grep(grep family), tr, sed, awk等, 一旦熟练掌握这些命令,那么你在Linux系统中处理文本就会得心应手。

  Shell脚本编程是Linux系统最为核心的技术之一,它能够利用简单的命令来实现一些复杂的功能,同时,由于Linux提供了很多文本处理命令,如grep(grep family), tr, sed, awk等, 一旦熟练掌握这些命令,那么你在Linux系统中处理文本就会得心应手。
  本文将展示如何利用Shell来实现WordCount功能。
  首先先看wordcount.sh的代码,用来实现WordCount功能。

#!/bin/bash

# filename: wordcount.sh
# usage: word count

# handle position arguments
if [ $# -ne 1 ]
then
    echo "Usage: $0 filename"
    exit -1
fi

# realize word count
printf "%-14s%s\n" "Word" "Count"

cat $1 | tr 'A-Z' 'a-z' | \
egrep -o "\b[[:alpha:]]+\b" | \
awk '{ count[$0]++ }
END{
for(ind in count)
{ printf("%-14s%d\n",ind,count[ind]); }
}' | sort -k2 -n -r

在上述代码中,$1参数为你输入的文本,利用cat命令读取其内容,利用tr命令将所有的大写字母转换为小写字母,再利用egrep命令抓取文本中的所有单词,并逐项输出,最后利用awk命令和关联数组来实现word count功能,并按照出现的数量递减输出。
  接着就是测试啦~~
  首先是road.txt文件,里面是美国诗人 Robert Frost写的诗歌 The Road Not Taken,参考网址为:https://www.poets.org/poetsorg/poem/road-not-taken。统计该文本的每个单词出现的数量,可以运行命令

./wordcount.sh road.txt

运行结果如下:




这里只显示了前面几个单词的出现数量。
  再测试一个文本speech.txt,里面的内容是罗斯福总统二战期间对日本宣战的演讲,具体网址为: http://www.historyplace.com/speeches/fdr-infamy.htm .运行命令

./wordcount.sh speech.txt

运行结果如下:




这里只显示了前面几个单词的出现数量。
  本次程序编写主要参考《Linux脚本攻略》。
  本次分享到此结束,欢迎大家交流~~

目录
相关文章
Mgo
|
Shell Go
go调用shell命令两种方式实现(有无返回值)
go调用shell命令两种方式实现(有无返回值)
Mgo
1568 1
|
算法 搜索推荐 Shell
python实现【希尔排序】(Shell Sort)
python实现【希尔排序】(Shell Sort)
python实现【希尔排序】(Shell Sort)
|
Shell 数据库
shell脚本循环查询数据库实现数据输出到csv
shell脚本循环查询数据库实现数据输出到csv
439 0
|
监控 Shell
使用 Shell 脚本监控主机,实现主机性能监控
使用 Shell 脚本监控主机,实现主机性能监控
487 0
使用 Shell 脚本监控主机,实现主机性能监控
|
运维 Linux Shell
总结:shell命令统计字符串长度的4种实现方式
总结:shell命令统计字符串长度的4种实现方式
总结:shell命令统计字符串长度的4种实现方式
|
JavaScript 前端开发 Shell
能用js实现的最终用js实现,Shell脚本也不例外
能用js实现的最终用js实现,Shell脚本也不例外
能用js实现的最终用js实现,Shell脚本也不例外
|
运维 关系型数据库 MySQL
运维必看--Shell脚本实现LAMP自动部署!
本篇内容记录了Shell脚本实现LAMP自动部署!
146 0
运维必看--Shell脚本实现LAMP自动部署!
|
运维 监控 Java
shell脚本配合zabbix实现tomcat的故障自愈
shell脚本配合zabbix实现tomcat的故障自愈 1.背景及实现方式方法 Tomcat运行JAVA类的程序代码经常会导致内存溢出,往往都是收到告警后再去处理,收到报警再处理就会拖延故障解决的时间,因此就需要靠故障自愈的机制来解决人为干预的成本。
410 0
shell脚本配合zabbix实现tomcat的故障自愈
Daz
|
Unix Linux Shell
GNU/Linux下实现一个简易shell,支持多重管道
简易shell,支持多重管道
Daz
546 0
|
运维 关系型数据库 MySQL
运维必看--Shell实现系统信息同步到Mysql
本篇内容记录了 Shell实现系统信息同步到Mysql的操作步骤。
105 0