首页/系统/Linux 运维命令速查/场景:去重同时保留原始顺序
本包目录(613 条)
文件与目录76 条
文本处理77 条
网络命令82 条进程与作业69 条磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条定时任务与计划50 条

场景:去重同时保留原始顺序

sort -u 会丢顺序;要「按首次出现顺序去重」用 awk 的 seen 数组,URL 清单、订单号去重场景常用。

Linux 运维命令速查系统更新于 2026-10-12
场景保序去重(first-occurrence)
组合awk '!seen[$0]++'

常用示例

常用示例
awk '!seen[$0]++' url.txt > url.uniq.txt
awk '!seen[tolower($0)]++' mail.txt      # 忽略大小写去重
wc -l url.txt url.uniq.txt               # 对比去重前后数量
awk '!a[$0]++' 是惯用写法:第一次遇到某行时 seen 为 0 → 取反为真 → 打印;之后都被过滤。

易错点

  • 整行比较:行尾 CRLF、行首空格等不可见差异会让「相同行」漏去重(先 cat -A 或统一清理)
  • 数组按去重后基数占用内存,亿级行去重先切分文件再分批处理

数据来源与参考

  • man 1 awk(GNU gawk 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌