挑战3:历史命令

介绍

在 Linux 中,对于文本的处理和分析是极为重要的,现在有一个文件叫做 data1,可以使用下面的命令下载:

$ wget https://labfile.oss.aliyuncs.com/courses/1/data1

data1 文件里记录是一些命令的操作记录,现在需要你从里面找出出现频率次数前 3 的命令并保存在 /home/skx/result

目标

  1. 处理文本文件 /home/skx/data1
  2. 将结果写入 /home/skx/result
  3. 结果包含三行内容,每行内容都是出现的次数和命令名称,如“100 ls”

提示

  1. cut 截取 (参数可以使用 -c 8-,使用 man cut 可以查看含义)
  2. uniq -dc 去重
  3. sort 的参数选择 -k1 -n -r
  4. 操作过程使用管道,例如:
$ cd /home/skx
$ cat data1 |....|....|....   >  /home/skx/result

参考答案

注意:请务必自己独立思考解决问题之后再对照参考答案,一开始直接看参考答案收获不大。

cat data1 |cut -c 8-|sort|uniq -dc|sort -rn -k1 |head -3 > /home/shiyanlou/result

# cut -c 8- 从第8个字符到结尾,用于去除行号
# sort 进行排序
# uniq -dc 输出重复过的行及重复次数,-d表示重复的只输出一行,-c表示输出次数
# sort -rn -k1,-r:反向排序,-k1 指定对第一个字段进行排序,-n:按数字排序
# head -3,取前三行

你可能感兴趣的:(Linux)