Linux作业(三)-shell统计某文章中出现频率最高的N个单词并排序输出出现次数

Linux课上的作业周三交,若有考虑不周到的地方,还请多多指教。

 

 

shell处理文本相关的常用命令见此博客

 

 

#

#如果输入两个参数 则第一个为统计单词的个数,第二个为要统计的文章

#如果输入一个参数 则默认统计单词的个数为10

#

 

具体思路:

将各种符号用换行替换(tr命令)

大写改小写(tr命令)

排序、统计单词个数并除去重复 (sort和uniq)

按出现次数的高低排序(sort)

打印N个需要统计的单词

 

#!/bin/bash
if [ $# -ne 2 -a $# -ne 1 ] ;then
        echo "usage: `basename $0 ` [n] input file "
        echo
        exit
fi

if [ $# -eq 1 ];then
        I_TOP=10
        I_FILE=$1
fi

if [ $# -eq 2 ];then
        I_TOP=$1
        I_FILE=$2
fi
tr -sc "[A-Z][a-z]"  "[\012*]"  < $I_FILE |  \
tr  "[A-Z]"  "[a-z]"  | \
sort  | uniq -c |   \
sort  -k1 -n -r  |  \
head -$I_TOP | nl


 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值