[bash]统计本文字频
2021-8-1 14:30
阅读:1502
为了简单起见,你可以假设:
words.txt只包括小写字母和 ' ' 。 每个单词只由小写字母组成。 单词间由一个或多个空格字符分隔。
假设 words.txt 内容如下:
the day is sunny the the the sunny is is 你的脚本应当输出(以词频降序排列):
the 4 is 3 sunny 2 day 1 说明:
不要担心词频相同的单词的排序问题,每个单词出现的频率都是唯一的。 你可以使用一行 Unix pipes 实现吗?
bash 编程是一项非常重要的技能,可以看到许多JD中明确写有熟悉一门脚本语言,shell或者Python,说明脚本语言在平时工作中有重要作用。通常我们需要对文件做复杂的重复性操作时,通过写脚本的方式,可以大大增加工作效率。本质上,shell是用c语言编写的系统软件,通常也称之为命令行工具,用户可以在这个界面通过shell脚本语言来访问linux的内核服务。
针对此题而言,我们可以用Bash脚本处理文本文件,如统计字频等。对于处理日常的文本文件,shell编程能够大大的提高效率,如grep、awk、sed等工具被称为linux文本三剑客。
cat words.txt | tr -s ' ' '\n'|sort|uniq -c |sort -r|awk '{print $2" "$1}'
语句解释:tr -s ’ ’ ‘\n’ 将重复的空格替换为换行 sort 默认按ascii排序 重复的字符串会排在一起 uniq -c 去重 -c 重复次数 sort -r 反向排序 也就是从大到小。得到按频率高低的结果 awk 格式化输出两列
转载本文请联系原作者获取授权,同时请注明本文来自苟家宁科学网博客。
链接地址:https://wap.sciencenet.cn/blog-3465931-1297894.html?mobile=1
收藏
当前推荐数:0
推荐到博客首页
网友评论0 条评论