加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

利用shell显示wordcount功能

发布时间:2020-12-15 19:39:14 所属栏目:安全 来源:网络整理
导读:??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%sn" "Word" "Count"

cat $1 | tr 'A-Z' 'a-z' | 
egrep -o "b[[:alpha:]]+b" | 
awk '{ count[$0]++ }
END{
for(ind in count)
{ printf("%-14s%dn",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/poetsor...。统计该文本的每个单词出现的数量,可以运行命令

./wordcount.sh road.txt

运行结果如下:

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

./wordcount.sh speech.txt

运行结果如下:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读