news 2026/4/16 7:56:45

Linux 命令:uniq

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 命令:uniq

概述

uniq命令是连续重复行去重/统计的工具,常与sort配合使用(先排序让重复行连续,再去重),核心用于文本去重、统计重复行出现次数,是处理日志、数据清单的高频组合工具,注意:直接对未排序文件使用uniq仅能去除相邻的重复行,无法处理非连续的重复行

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

一、基本语法

uniq[选项][输入文件[输出文件]]
  • 无输入文件时,默认读取标准输入(最常用:配合管道sort 文件名 | uniq);
  • 可指定输出文件,将处理结果写入(替代重定向>);
  • 核心前提:仅处理连续的重复行,非连续重复行不会被识别。

二、核心默认行为

连续重复行去重,仅保留一行,非连续重复行原样输出。
示例:未排序文件test.txt

apple apple banana apple banana banana

直接执行uniq test.txt,输出:

apple banana apple banana

(仅去除了相邻的重复行,非连续的apple/banana仍保留)

三、常用选项(高频且简洁,无冗余选项)

uniq的选项围绕去重、统计、显示重复行设计,所有选项均可组合使用,覆盖99%场景:

选项英文全称作用实用场景示例效果(基于上述test.txt,先sort再uniq)
-c--count统计每行出现的次数,次数在前,内容在后统计日志中重复IP/关键词的出现频次2 apple
3 banana
-d--repeated仅显示连续重复的行(至少出现2次),且仅保留一行筛选出有重复的内容,排除唯一行apple
banana
-D--all-repeated显示所有的连续重复行(保留所有重复实例)查看重复行的全部原始内容apple
apple
banana
banana
banana
-u--unique仅显示唯一的行(从未连续重复的行)筛选出无重复的内容若文件无唯一行则无输出
-f N--skip-fields=N忽略前N列,按剩余内容判断是否重复按指定列去重(如忽略ID列,按内容去重)例:1 apple/2 apple-f1视为重复行
-s N--skip-chars=N忽略前N个字符,按剩余内容判断是否重复按字符位置去重(如忽略前缀,按后缀判断)例:a123/b123-s1视为重复行
-w N--check-chars=N仅比较前N个字符,判断是否重复仅按前N个字符去重/统计例:apple1/apple2-w5视为重复行

四、经典实操示例(分基础/进阶,覆盖所有核心场景)

基础场景:先排序再去重(最常用,必学)

基于上述test.txt,先通过sort让重复行连续,再用uniq处理:

# 1. 基础去重(保留唯一行,去除所有重复行)sorttest.txt|uniq# 输出:apple / banana# 2. 统计重复次数(核心高频)sorttest.txt|uniq-c# 输出:2 apple / 3 banana# 3. 仅显示有重复的行(至少出现2次)sorttest.txt|uniq-d# 输出:apple / banana# 4. 仅显示唯一行(无任何重复)# 新建含唯一行的文件test2.txt:apple/apple/banana/pearsorttest2.txt|uniq-u# 输出:pear
进阶场景1:按指定列/字符去重(-f/-s/-w)

处理结构化文本data.txt(ID 名称 类型,按名称去重,忽略ID列):

1 apple fruit 2 apple fruit 3 banana fruit 4 apple veg 5 orange fruit
# -f1:忽略前1列(ID列),按剩余内容判断重复sortdata.txt|uniq-f1# 输出:# 1 apple fruit# 4 apple veg# 3 banana fruit# 5 orange fruit# -w6:仅比较前6个字符,判断重复(1 apple / 2 apple 前6字符一致)sortdata.txt|uniq-w6 -c# 输出:# 3 1 apple fruit# 1 5 orange fruit
进阶场景2:组合选项(统计+显示所有重复行)
# 显示所有重复行,并统计每行总次数(先统计再筛选,需配合awk)sorttest.txt|uniq-c|awk'$1>1'# 输出:2 apple / 3 banana(等价sort+uniq -d,且带次数)# 显示所有重复的原始行,并写入新文件sorttest.txt|uniq-D>repeat_lines.txt
进阶场景3:与其他命令配合(日志统计实战)

统计Nginx访问日志access.log访问次数最多的前5个IP

# 提取IP列 → 排序 → 统计次数 → 按次数降序 → 取前5grep-o"\b[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\b"access.log|sort|uniq-c|sort-nr|head-5

五、与sort -u的核心区别(易混淆,必分清)

sort -usort | uniq均能实现全局去重,但功能侧重不同,按需选择:

命令组合核心功能额外能力适用场景
sort -u 文件名排序+全局去重,一步完成无统计、筛选功能,仅去重仅需去重,无需统计重复次数
`sort 文件名uniq`排序+全局去重,两步完成可配合-c/-d/-u实现统计/筛选
`sort 文件名uniq -c`排序+去重+统计次数核心统计能力,无替代方案

结论:仅去重用sort -u(更高效);需统计/筛选重复行,必须用sort | uniq 选项

六、关键注意事项

  1. 核心前提uniq仅处理连续重复行,未排序文件直接使用会漏判非连续重复行,所有全局去重/统计场景,必须先sort
  2. 空行处理:空行视为普通行,连续空行会被去重/统计,可先用grep -v "^$"过滤空行;
  3. 空格/制表符:行首/行尾的空格会影响重复判断(如appleapple视为不同行),可先用sed 's/^ *//;s/ *$//'去除首尾空格;
  4. 输出文件:指定输出文件时,输入文件和输出文件不能为同一个文件(否则会清空文件);
  5. 超大文件uniq逐行处理,内存占用极低,可配合sort处理GB级文本文件(如日志、数据文件)。

七、高频组合用法(实战必用,直接复用)

1. 文本全局去重(高效版)
sortfile.txt -u>unique_file.txt
2. 统计重复行次数并按次数降序排列
sortfile.txt|uniq-c|sort-nr
3. 筛选出仅出现一次的唯一行
sortfile.txt|uniq-u
4. 筛选出重复出现的行(至少2次)并统计次数
sortfile.txt|uniq-c|awk'$1 >= 2'
5. 处理结构化文本:按指定列去重并统计
# 按第2列(逗号分隔)去重,统计次数(先按第2列排序,再忽略前1列去重)sort-t","-k2 file.csv|uniq-f1 -c

总结

uniq连续重复行处理工具,核心价值是与sort配合实现全局去重/统计/筛选,日常使用的核心口诀

  • 仅去重:sort -u一步到位;
  • 要统计/筛选:sort | uniq -c/-d/-u组合使用;
  • 结构化文本:sort -t 分隔符 -k 列号 | uniq -f N按列处理。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:01:35

当教育论文遇上“数据炼金师”:书匠策AI如何把数字变成学术金矿

在学术江湖里,论文写作是一场“数据与逻辑的双重冒险”。有人为收集数据跑断腿,有人被统计代码折磨到崩溃,更有人对着满屏数字发呆,完全不知道如何让它们“开口说话”。别慌!今天我们要认识一位教育领域的“数据炼金师…

作者头像 李华
网站建设 2026/4/16 9:00:58

uniapp微信小程序php python安卓系统的nodejs校园二手物品交换平台APP

文章目录 技术栈与平台架构核心功能模块数据库设计接口与安全部署与性能扩展性考虑 系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 技术栈与平台架构 uniapp作为跨平台开发框架,支持…

作者头像 李华
网站建设 2026/4/16 10:39:51

当论文写作遇上“数据魔法师”:书匠策AI如何重塑学术分析新范式

在学术江湖里,论文写作是每位研究者的“必修课”,而数据分析则是这门课里最让人头疼的“高数题”。面对堆积如山的数据、晦涩难懂的统计软件,许多人感叹:“明明想讲好一个科学故事,却被数据困在了‘语法课’里。”直到…

作者头像 李华
网站建设 2026/4/16 10:46:50

厨房双层拉篮推荐榜单,7款精析,助你解锁小空间收纳潜能

面对厨房空间有限、物品繁杂的难题,一款设计精良、功能强大的双层拉篮是提升收纳效率与厨房品质的关键。本文将基于真实性、实用性与广泛适配性原则,为你深入剖析并推荐7款市面主流厨房双层拉篮,助你找到最适合自家厨房的“收纳利器”。一、为…

作者头像 李华
网站建设 2026/4/16 12:21:26

RAGCache:让RAG系统更高效的多级动态缓存新方案

.01 概述 在当下的AI研究中,检索增强生成(RAG)技术正在逐步提升大型语言模型(LLM)的知识运用能力,帮助它们结合外部知识生成更加准确、符合现实的文本。然而,RAG系统却面临一个无法忽视的瓶颈…

作者头像 李华
网站建设 2026/4/16 12:17:18

手把手大模型系列|一篇文章教会你使用有RAG功能的CAMEL框架

在本教程中,我们将简短地介绍检索增强生成RAG (Retrieval-Augmented Generation)的组成部分,并详细介绍如何在CAMEL框架中使用Customized RAG和Auto RAG。备注:本次搭建使用Milvus作为默认向量存储。 01 RAG组成部分 检索增强生成 (Retrieval…

作者头像 李华