2016百度校招面试题
在linux中,对于文本的处理和分析是极为重要的,现在有一个文件叫做data1,同学们可以在这里下载,
wget http://labfile.oss.aliyuncs.com/courses/1/data1
里面记录是一些命令的记录,现在需要你从里面找出出现频率次数前3的命令并保存在/home/shiyanlou/result。
目标
- 处理文本data
- 将结果写入result
- 结果包含次数和命令,如“100 ls”
提示
- cut截取(-c 8明白含义吗)
- uniq -dc去重
- sort 的参数选择-k1 -n -r
答案类似于
cat data|....|....|.... > /home/shiyanlou/result
cat data1 | cut -c 8- | sort | uniq -dc | sort -n -r > result
解释:
在去重之间,必须先排序,否则,内容为空,具体原因不太清楚,希望清楚的可以留言,谢谢
- cut -c 8-: 截取第8个字符之后的字符(包括第8个)
- sort: 默认排序
- uniq -dc: 去重并,-c在输出行前面加上每行在输出文件中出现的次数,-d仅显示重复行
- sort -n -r: 按数值从大到小的顺序排列,-r以相反的顺序排序,默认从小到大,-n依照数值的大小排序
- head -n -3 显示头三条
附件:
sort -t -k:
-t后面可以设定间隔符,指定间隔符之后,就可以用-k来指定列数
将如下日期按月份排序
2017-12-09
2017-01-20
2017-04-24
2017-10-23
sort -n -k 2 -t'-'