# uniq - 显示或忽略重复的行
将文件中重复出现的行删除,结果送到标准输出或者指定文件。在使用uniq指令之前,必须使用sort对内容进行排序,否则没有效果。如果没有选项,则将匹配的行合并到第一个匹配项。
# 适用范围
RedHat
RHEL
Ubuntu
CentOS
Debian
Deepin
SUSE
openSUSE
Fedora
Linux Mint
Alpine Linux
Arch Linux
# 语法
uniq [选项] [input] [output]
将输入文件(或标准输入)中邻近的重复行写入到输出文件(或标准输出)中。
当没有选项时,邻近的重复行将合并为一个。
- INPUT(可选):输入文件,不提供时为标准输入。
- OUTPUT(可选):输出文件,不提供时为标准输出。
# 选项
-c,--count # 显示行重复出现的次数
-d, --repeated # 仅显示重复出现的行
-D, --all-repeated[=delimit-method] # 打印所有重复行
-f, --skip-fields=N # 忽略前n个字段
-i, --ignore-case # 比较时忽略大小写
-s, --skip-chars=N # 忽略前n个字符
-u, --unique # 只显示不重复的行
-z, --zero-terminated # 以0字节为结束符,而不是换行
-w, --check-chars=N # 比较不超过指定次数
--help # 显示帮助文档
--version # 显示命令版本信息
# 举例
[sogrey@bogon demos]$ cat test5.txt
石家庄今日新增16例确诊病例
北京一确诊者隐瞒行程不配合流调
中国留美博士遇害 美驻华使馆慰问
特朗普夫人发文谴责国会暴乱
理塘文旅公司回应丁真抽烟
北京一确诊者隐瞒行程不配合流调
特朗普夫人发文谴责国会暴乱
山西晋中新增2例无症状感染者
特朗普夫人发文谴责国会暴乱
[sogrey@bogon demos]$ sort test5.txt | uniq -c # 先排序,然后再删除重复行,显示重复行出现的次数
2 北京一确诊者隐瞒行程不配合流调
1 理塘文旅公司回应丁真抽烟
1 山西晋中新增2例无症状感染者
1 石家庄今日新增16例确诊病例
3 特朗普夫人发文谴责国会暴乱
1 中国留美博士遇害 美驻华使馆慰问
[sogrey@bogon demos]$ sort test5.txt | uniq -c -u # 只显示不重复的行
1 理塘文旅公司回应丁真抽烟
1 山西晋中新增2例无症状感染者
1 石家庄今日新增16例确诊病例
1 中国留美博士遇害 美驻华使馆慰问
[sogrey@bogon demos]$