1. 命令概述:为什么需要uniq
在Linux系统日常运维和数据处理中,我们经常会遇到需要处理重复文本行的场景。比如分析日志文件时统计错误出现的次数,或者清理数据集中的冗余记录。这时候uniq命令就是你的瑞士军刀——它能够快速识别或过滤相邻的重复行,是文本处理流水线中不可或缺的一环。
我第一次接触uniq是在处理一个5GB的Nginx访问日志时,需要统计不同IP的访问频次。当时用sort|uniq组合命令,原本需要写脚本的工作,一行命令就搞定了。这个命令看似简单,但配合不同的参数选项,能解决许多实际工作中的文本处理难题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能解析
2.1 基础去重模式
最基本的用法是直接过滤相邻的重复行:
bash复制$ cat test.txt
apple
apple
banana
cherry
cherry
cherry
$ uniq test.txt
apple
banana
cherry
注意:uniq只会对相邻的重复行生效,这就是为什么通常需要先sort再uniq
2.2 计数模式(-c)
统计每行重复出现的次数,这个在分析日志时特别有用:
bash复制$ uniq -c test.txt
2 apple
1 banana
3 cherry
2.3 只显示重复行(-d)
快速找出所有重复出现的行:
bash复制$ uniq -d test.txt
apple
cherry
2.4 只显示唯一行(-u)
与-d相反,只显示没有重复过的行:
bash复制$ uniq -u test.txt
banana
3. 高级用法实战
3.1 结合sort处理非相邻重复
经典组合技,先排序再去重:
bash复制$ cat data.txt
orange
apple
banana
apple
orange
$ sort data.txt | uniq
apple
banana
orange
3.2 按字段去重(-f)
跳过前N个字段进行比较,比如处理CSV文件:
bash复制$ cat users.csv
1,John,Doe
2,Jane,Smith
3,John,Doe
