如何去除重复的行?
另一个常与 sort 搭配使用的命令是 uniq,
它的作用是删除重复的行。
更准确地说,
它只会删除「相邻」的重复行。
如果文件内容是:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
那么 uniq 会输出:
2017-07-03
2017-08-03
但如果文件内容是:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
那么 uniq 将打印这四行全部内容。
原因是 uniq 旨在处理非常大的文件。
为了从文件中删除不相邻的重复行,
它必须把整个文件保存在内存中
(或者至少,
保留到目前为止出现过的所有唯一行)。
只删除相邻的重复行时,
它只需在内存中保留最近的一行唯一内容即可。
本练习是课程的一部分
Shell 入门
练习说明
编写一条管道以:
- 从
seasonal/winter.csv获取第 2 列, - 从输出中去掉单词 "Tooth",只保留牙齿名称,
- 对输出进行排序,使相同的牙齿名称相邻;以及
- 每个牙齿名称仅显示一次,并附带其出现次数。
您的管道开头与上一个练习相同:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
在此基础上添加一个 sort 命令,并使用 uniq -c 来显示唯一行及其出现次数,而不是分别使用 uniq 和 wc。
