标签:ofo weixin 连续 字母 https 单词 内容 相关 -o
写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。思考: 1、需要把文件里的单词都变成一列,然后进行统计。
2、用循环语句对每个单词进行统计,相同的即+1
方法一:tr获取单词
cat words.txt |tr -cs "[a-z][A-Z]" "\n" |tr A-Z a-z |sort|uniq -c|sort -r|awk ‘{print $2,$1}‘
tr 命令:tr是transform的缩写,该命令是著名的流处理命令sed的简化版,也是用来对文档进行转换的。tr -cs “[a-z][A-Z]" "\n" -c表示取“[a-z][A-Z]"的补集(complement),-s 表示把连续的匹配压缩成一个”\n“,所以整个命令就是把除了字母外的其他字符一律压缩成换行符,如果有连续的匹配,则只转换成一个换行符。
tr A-Z a-z 把大写统一转换成小写。
sort 排序 按字母顺序
uniq 去重 该命令必须对排序好的文档进行,-c 表示打印出字母的重复次数
然后再次 sort -r ,反向排序,-n正向排序;这次sort比较复杂,因为在uniq命令后 输出结果已经变成了 如下形式:
n word (单词的重复次数+空格+单词)
awk ‘{print $2,$1}‘ 替换下n word的位置
方法二、awk功能
egrep -o "\b[[:alpha:]]+\b" words.txt| awk ‘{count[$0]++}END{for(ind in count){printf("%-14s%d\n",ind,count[ind]);}}‘ |sort -k2 -r
相关链接:
https://www.cnblogs.com/ggbond1988/p/4812527.html
https://blog.csdn.net/weixin_38336658/article/details/82258031
http://tieba.baidu.com/p/2530450657
标签:ofo weixin 连续 字母 https 单词 内容 相关 -o
原文地址:http://blog.51cto.com/9030540/2319414