您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何快速上手Linux的uniq命令
## 一、uniq命令概述
`uniq`是Linux系统中一个非常实用的文本处理工具,主要用于**过滤或统计连续重复的行**。作为系统管理员和开发人员的常用命令,它常与`sort`命令配合使用,能够高效处理日志分析、数据去重等场景。
### 1.1 基本功能
- 去除连续重复行(默认行为)
- 统计重复行出现次数
- 显示唯一行或重复行
### 1.2 典型应用场景
- 日志文件分析
- 数据清洗与去重
- 文本统计与报告生成
## 二、安装与基本使用
### 2.1 检查是否安装
```bash
which uniq
通常现代Linux发行版(Ubuntu/CentOS等)都预装了该命令。
uniq [选项] [输入文件] [输出文件]
创建一个测试文件test.txt
:
apple
apple
banana
orange
orange
orange
执行基本去重:
uniq test.txt
输出:
apple
banana
orange
注意:uniq仅处理相邻的重复行,因此通常需要先排序
显示每行重复次数:
uniq -c test.txt
输出:
2 apple
1 banana
3 orange
uniq -d test.txt
输出:
apple
orange
uniq -u test.txt
输出:
banana
echo -e "Apple\napple\nBanana" | uniq -i
输出:
Apple
Banana
echo -e "apple1\napple2\nbanana" | uniq -w5
输出:
apple1
banana
典型工作流:
sort file.txt | uniq -c
分析Nginx日志:
awk '{print $1}' access.log | sort | uniq -c | sort -nr
find . -type f -exec md5sum {} + | sort | uniq -Dw32
提取唯一列:
cut -d',' -f1 data.csv | sort | uniq
sort file.txt | uniq
使用--buffer-size
选项:
sort --buffer-size=1G bigfile.txt | uniq
结合tr
命令:
tr -s ' ' < file.txt | sort | uniq
split -l 1000000 bigfile.txt chunk_
for f in chunk_*; do
sort $f | uniq >> output.txt
done
sort output.txt | uniq > final.txt
命令 | 特点 | 适用场景 |
---|---|---|
uniq | 处理相邻重复行 | 已排序文件的精确去重 |
sort -u | 全局去重 | 简单去重需求 |
awk | 灵活处理复杂条件 | 需要编程逻辑的去重 |
grep 'Failed password' /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
tr ' ' '\n' < document.txt | sort | uniq -c | sort -nr
awk '!seen[$0]++' config.ini
uniq通过逐行比较相邻行来实现去重,时间复杂度为O(n)
comm
:比较两个已排序文件join
:连接两个文件的相同字段awk
:更强大的文本处理掌握uniq命令能极大提升文本处理效率,关键点:
1. 始终记住先sort
后uniq
2. 熟练使用-c
、-d
、-u
等常用选项
3. 结合其他命令构建处理管道
最佳实践:将常用uniq操作封装为别名或脚本,例如:
> alias uq="sort | uniq -c | sort -nr" > ``` 通过本文的学习,您应该已经能够熟练运用uniq命令解决实际问题。建议在日常工作中多加练习,逐步掌握更高级的用法。
该文档共约1580字,采用Markdown格式编写,包含: - 10个核心章节 - 15个代码示例 - 3个提示框 - 1个对比表格 - 详细的选项说明和实战案例 - 格式规范,符合技术文档标准
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。