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

Linux下如何提取仅出现一次的行并保留原始排序?

保留原始顺序筛选仅出现一次的行

文件内容

2
1
4
3
2
1

需求

输出仅出现一次且保留原始顺序的行,期望输出:

4
3

之前的尝试问题

  • 使用sort file.txt | uniq -u:能筛选出仅出现一次的行,但结果会被排序,实际输出:
3
4
  • 使用awk '!x[$0]++' file.txt:能保留原始顺序,但输出的是所有去重后的行,实际输出:
2
1
4
3

解决方案

可以通过两次遍历文件的awk命令实现需求:

awk 'NR==FNR{count[$0]++; next} count[$0]==1' file.txt file.txt

命令解释

  • 第一次遍历(NR==FNR):统计每行内容的出现次数,将计数存入数组count
  • 第二次遍历:检查当前行的计数是否为1,若是则打印该行,这样就能严格按照原始文件的顺序输出仅出现一次的内容。

执行该命令后,输出结果与期望一致:

4
3

内容的提问来源于stack exchange,提问作者Syed Ahmed Jamil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:52:41