shell script 统计文本中字符串的出现的频率及按频率的多少从高到低输出_面试算法题之一
来源:互联网 发布:开淘宝怎么上传照片 编辑:程序博客网 时间:2024/05/01 14:22
一个文本文件website里有aa,bb,cc,aa,bbb(每行一个字符串)等 相关的字符串,写出命令来查找出这个文本中都有哪些字符串及各字符串的个数并按个数的多少从多到少依序排序输出
website里的内容:
aa
bb
aa
cc
bb
aa
生成的文件strsorted.txt内容为(即结果)为:
string count
aa 3
bb 2
cc 1
我写的shell脚本如下:
#!/bin/bash
foo()
{
if [ $# -ne 1 ];
then
echo "Usage:$0 filename";
exit -1
fi
grep * website | awk '{ count[$0]++ } END { printf("%s %s\n","website","count"); for(ind in count) { printf("%s %d\n",ind,count[ind]); } }' | sort -nrk 2 >strsorted.txt;
}
foo website
执行后在strsorted.txt中的内容为:
website count
website里的内容:
aa
bb
aa
cc
bb
aa
生成的文件strsorted.txt内容为(即结果)为:
string count
aa 3
bb 2
cc 1
我写的shell脚本如下:
#!/bin/bash
foo()
{
if [ $# -ne 1 ];
then
echo "Usage:$0 filename";
exit -1
fi
grep * website | awk '{ count[$0]++ } END { printf("%s %s\n","website","count"); for(ind in count) { printf("%s %d\n",ind,count[ind]); } }' | sort -nrk 2 >strsorted.txt;
}
foo website
执行后在strsorted.txt中的内容为:
website count
并没有统计出最终正确的结果,原因是 grep * website 写法有误 。
PS;我参考了http://blog.csdn.net/guaguastd/article/details/8332757
使用shell统计出出现次数排名top10的网址,测试执行正确。
其中不明白的地方是:
egrep -o "http://[a-zA-Z0-9.]+\.[a-zA-Z]{2,3}" website
(1) egrep的参数中 -o代表?我网查没有找到 -o
(2) 正则表达式中http://[a-zA-Z0-9.]+\.[a-zA-Z]{2,3} 中[a-zA-Z0-9.]最后还带 有一个点'.'是针对网址中的.吗?
\. 转义字符加上点,我理解应该为eg:http://www.163.com 中的第一个点,但{2,3}是什么意思呢?求解释,谢谢
正确的写法应为:
grep “^[a-zA-Z]*” website | awk '{ count[$0]++ } END { printf("%s %s\n","website","count"); for(ind in count) { printf("%s %d\n",ind,count[ind]); } }' | sort -nrk 2 >strsorted.txt;
其中: grep “^[a-zA-Z]*” website 表示 从website文件中读取以a-z或A-Z开头的所有字符串,并将结果通过管道做为awk命令的标准输入。
耽误相当多的时间,记录以备遇到同样问题的小伙伴们参考
1 0
- shell script 统计文本中字符串的出现的频率及按频率的多少从高到低输出_面试算法题之一
- 统计文件中字符串出现的频率
- 使用hash算法统计字符串中字符出现的频率
- 统计一个字符串中出现的最大频率字符;若有频率相同字符,按字典序输出
- 统计文本中英文单词的出现频率
- 统计文本中各单词出现的频率(JavaWeb)
- 统计文本中出现频率最高的10个词
- python实现统计文本中单词出现的频率
- 统计字符串各字母出现的频率
- js统计字符串出现的频率
- 基于bf算法统计文本中某个单词出现的频率
- 统计一TXT文档中单词出现频率,输出频率最高的10个单词
- 统计字符串中出现频率最高的字符
- 统计字符串中出现频率最高的字符
- Java实现 统计单词出现的次数并按照单词频率从高到低输出
- 统计文件中单词出现的频率
- Linux作业(三)-shell统计某文章中出现频率最高的N个单词并排序输出出现次数
- 统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
- [C++]inline函数
- 数组、List以及Map的遍历
- JDK概述
- B - Break Standard Weight
- 阶乘小结
- shell script 统计文本中字符串的出现的频率及按频率的多少从高到低输出_面试算法题之一
- Node学习笔记——模块和包
- Java设计模式透析之 —— 模板方法(Template Method)
- Openstack 宿主机电源管理
- 软件版本的GA 代表什么意思?
- 链表程序改良
- iPhoneSDK开发136技系列:第22技 使用粘贴板
- 单片机试验代码2
- POJ做题笔记之一 水题(1)