uniq
是 Linux 中用于 过滤或统计连续重复行 的实用命令,通常需要与 sort
结合使用(因为 uniq
仅处理相邻的重复行)。以下是详细用法和示例:
uniq [选项] [输入文件] [输出文件]
选项 | 作用 |
---|---|
-c |
统计每行重复出现的次数 |
-d |
仅显示重复的行(每组重复行只显示一次) |
-u |
仅显示不重复的行 |
-i |
忽略大小写差异 |
-f N |
跳过前 N 个字段(字段以空格或制表符分隔) |
-s N |
跳过前 N 个字符 |
-w N |
仅比较每行的前 N 个字符 |
cat file.txt | uniq # 直接去重
uniq file.txt # 效果同上
sort file.txt | uniq -c # 先排序再统计
输出示例:
3 apple
1 banana
2 orange
sort file.txt | uniq -d
sort file.txt | uniq -u
sort file.txt | uniq -i
sort file.txt | uniq -f 2 # 跳过每行前2个字段
sort file.txt | uniq -s 5 # 跳过每行前5个字符
uniq
仅处理相邻重复行,通常需先 sort
:
bash
sort file.txt | uniq # 正确用法
bash
uniq input.txt output.txt
假设 data.txt
内容:
apple
banana
apple
orange
orange
apple
操作1:统计重复次数
sort data.txt | uniq -c
输出:
3 apple
1 banana
2 orange
操作2:仅保留唯一行
sort data.txt | uniq -u
输出:
banana
cut
/awk
结合处理特定列:
bash
cut -d',' -f1 data.csv | sort | uniq -c
通过灵活组合选项,uniq
可以高效完成日志分析、数据统计等任务。