介绍
在 Linux 中,对于文本的处理和分析是极为重要的,现在有一个文件叫做 data1,可以使用下面的命令下载:
$ wget https://labfile.oss.aliyuncs.com/courses/1/data1
data1 文件里记录是一些命令的操作记录,现在需要你从里面找出出现频率次数前 3 的命令并保存在 /home/skx/result。
目标
- 处理文本文件 /home/skx/data1
- 将结果写入 /home/skx/result
- 结果包含三行内容,每行内容都是出现的次数和命令名称,如“100 ls”
提示
- cut 截取 (参数可以使用 -c 8-,使用 man cut 可以查看含义)
- uniq -dc 去重
- sort 的参数选择 -k1 -n -r
- 操作过程使用管道,例如:
$ 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,取前三行