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'-'