You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Unix环境下如何删除连续重复行?

解决Unix下删除连续重复行的问题

嘿,我懂你要的是啥——只干掉连续重复的行,不是把所有重复行都删掉对吧?这在Unix环境里其实有几个超好用的工具能搞定,我给你捋几个最常用的方法:

方法一:用uniq命令(最直接)

uniq就是专门干这个活的!它默认的行为就是只删除连续出现的重复行,完全贴合你的需求。

基本用法

如果你的内容存在文件里(比如input.txt),直接运行:

uniq input.txt

要是想把结果保存到新文件:

uniq input.txt output.txt

如果内容是从其他命令的管道输出过来的,这么用就行:

cat input.txt | uniq

示例验证

比如你的输入:

This is not consecutive
This is consecutive
This is consecutive
This is consecutive
This is not consecutive

运行uniq后,输出就是:

This is not consecutive
This is consecutive
This is not consecutive

刚好把连续重复的3行This is consecutive压缩成1行,非连续的行全部保留,完美符合预期。

方法二:用awk脚本(更灵活)

如果需要自定义判断逻辑,或者不想依赖uniq,awk是个绝佳选择。这个脚本会逐行对比当前行和上一行,只有不一样的时候才打印:

awk 'prev != $0 {print; prev=$0}' input.txt

脚本解释

  • prev != $0:判断当前行($0)和上一行(存在变量prev里)是否不同
  • 如果不同,就打印当前行,然后把prev更新为当前行的内容
  • 第一行时prev是空值,所以肯定会被打印出来

这个方法和uniq效果完全一致,但你可以轻松修改判断条件——比如想忽略大小写差异,改成tolower(prev) != tolower($0)就行。

额外小提示

  • 用uniq时想忽略大小写差异,加-i参数:uniq -i input.txt
  • uniq -c还能显示每行的重复次数,比如会输出 3 This is consecutive,调试的时候特别有用

内容的提问来源于stack exchange,提问作者Richard Adams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:20:26