ANALYSIS
Linux 每日一篇 - 37 - uniq
Linux 文本去重神器!掌握 uniq 命令,轻松处理重复数据,让文本分析更精准!
uniq 命令是什么?
uniq 命令是 Linux 中用于过滤和统计文本文件中重复行的工具。它可以删除相邻的重复行,统计重复次数,或只显示唯一行或重复行。uniq 通常与 sort 命令结合使用以处理非相邻的重复行。
基本用法
PRTCL // PLAINTEXT
# 删除相邻的重复行uniq filename
# 显示每行重复的次数uniq -c filename
# 只显示重复的行uniq -d filename
# 只显示唯一的行(不重复的行)uniq -u filename
# 忽略大小写uniq -i filename
# 比较时跳过开头的 N 个字符uniq -s 5 filename
# 比较时只考虑前 N 个字符uniq -w 10 filename
# 指定字段分隔符uniq -f 1 filename # 跳过第一个字段实用技巧
PRTCL // PLAINTEXT
# 与 sort 命令结合使用(处理所有重复行,不仅仅是相邻行)sort filename | uniq
# 统计并显示重复次数,按次数排序sort filename | uniq -c | sort -nr
# 显示重复次数大于 N 的行sort filename | uniq -c | awk '$1 > 2 {print $2}'
# 显示只出现一次的行sort filename | uniq -u
# 显示至少出现一次的重复行sort filename | uniq -d
# 统计不同内容的数量sort filename | uniq | wc -l
# 显示重复行的统计信息sort filename | uniq -c | awk '{print $1 "次: " $2}'
# 按特定字段去重(跳过前 N 个字段进行比较)sort -k 3,3 filename | uniq -f 2
# 按特定字符数比较uniq -w 10 filename # 只比较前 10 个字符
# 忽略大小写去重sort -f filename | uniq -i常用场景
PRTCL // PLAINTEXT
# 处理访问日志,统计 IP 访问次数awk '{print $1}' access.log | sort | uniq -c | sort -nr
# 从列表中去除重复项sort userlist.txt | uniq > unique_userlist.txt
# 查找最常访问的页面awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -10
# 统计错误日志中的错误类型grep "ERROR" error.log | awk '{print $5}' | sort | uniq -c
# 查找只出现一次的单词tr ' ' '\n' text.txt | sort | uniq -u
# 统计进程类型ps aux | awk '{print $11}' | sort | uniq -c
# 检查重复的邮件地址sort emails.txt | uniq -d # 显示重复的邮箱
# 统计系统中不同用户的进程数ps -eo user | sort | uniq -c
# 查找网络连接中的重复 IPnetstat -an | awk '{print $5}' | sort | uniq -c
# 检查配置文件中的重复配置项grep "^key=" config.conf | sort | uniq -d高级用法
PRTCL // PLAINTEXT
# 结合其他命令进行复杂的数据分析# 统计访问量最高的 10 个 IP 地址awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
# 查找重复文件(基于文件名)ls -la | awk '{print $9}' | sort | uniq -d
# 分析系统日志中的错误模式grep -i error system.log | awk '{print $4 ":" $5 ":" $6}' | sort | uniq -c
# 处理 CSV 文件的重复项sort -t ',' -k 2,2 data.csv | uniq -w 20 # 按第 2 列前 20 个字符比较
# 检查端口占用情况netstat -tuln | awk '{print $4}' | sort | uniq -c | grep -v "1 "
# 分析用户行为awk '{print $1, $7}' access.log | sort | uniq -c | sort -nr
# 创建数据摘要sort data.txt | uniq -c | awk '{if($1>1) print "重复: " $2; else print "唯一: " $2}'
# 按不同条件过滤# 忽略前导空格sort -k 1.1,1.10 data.txt | uniq -s 3 # 跳过前 3 个字符比较
# 处理多字段数据sort -t ':' -k 1,1 /etc/passwd | uniq -f 1 # 按用户名去重,忽略其他字段实际应用示例
PRTCL // PLAINTEXT
# 示例 1: 处理学生成绩数据# 假设文件格式: 姓名 年龄 科目 分数# 找出重复的记录sort -k 1,2 grades.txt | uniq -f 2
# 示例 2: 分析网站访问日志# 统计每个页面的访问次数awk '{print $7}' access.log | sort | uniq -c | sort -nr
# 示例 3: 管理用户列表# 查找重复的用户名cut -d: -f1 /etc/passwd | sort | uniq -d
# 示例 4: 处理邮件列表# 去除重复邮件地址grep -iE '[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}' emails.txt | sort | uniq
# 示例 5: 检查服务配置# 找出重复的服务端口配置grep -E "port [0-9]+" services.conf | awk '{print $2}' | sort | uniq -d
# 示例 6: 处理产品列表# 按产品 ID 去重sort -k 1,1 products.txt | uniq
# 示例 7: 分析系统进程# 统计每个用户运行的进程数ps -eo user | tail -n +2 | sort | uniq -c与相关命令的配合
PRTCL // PLAINTEXT
# uniq 与 sort 的配合使用说明:# uniq 只删除相邻的重复行,所以通常需要先用 sort 排序sort file.txt | uniq # 这样可以删除所有重复行# 而直接使用 uniq file.txt 只能删除相邻的重复行
# uniq 与 grep 的配合:grep "pattern" file.txt | sort | uniq
# uniq 与 awk 的配合:awk '{print $1}' file.txt | sort | uniq -c
# uniq 与管道的配合:cat file1.txt file2.txt | sort | uniq > merged_unique.txt注意事项
PRTCL // PLAINTEXT
# uniq 只处理相邻的重复行,因此通常需要先排序# 默认情况下,uniq 区分大小写# uniq 不会修改原文件,结果输出到标准输出# 使用 uniq -c 时,计数在每行前面显示# -f 选项跳过字段时,字段以空格或制表符分隔# -s 和-w 选项用于字符级比较,需要谨慎使用# 对于大文件,考虑使用 sort -u 替代 sort | uniq抖音文案
🎯 Linuxuniq 命令!
✅ 基本用法:uniq ✅ 常用参数:uniq -option ✅ 实用技巧:uniq —help
每天一个 Linux 命令,30 天变身 Linux 高手!
#Linux 入门 #Shell 命令 #程序员必备 #技术分享
关于我
全平台同名”汪多多是只猫”,专注分享实用技术教程,让你的 IT 学习之路更轻松!
关注我,每天一个 Linux 命令,轻松入门 Linux 系统!
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.08
Auth_Verified: 2026.04.08
