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

如何基于SSV文件第三列排序并按重复次数筛选删除行?

处理分号分隔文件(SSV)的行过滤问题

可以通过两种高效的命令行方案实现需求,以下是具体操作:

方案一:用awk一次性完成(推荐,适合大文件)

直接使用awk统计第三列的出现次数并过滤行,无需生成中间文件:

awk -F';' 'NR==FNR {count[$3]++; next} count[$3]>=4' input.txt input.txt

命令解释:

  • -F';':指定字段分隔符为分号
  • NR==FNR:仅在处理第一个input.txt时执行统计逻辑,用count[$3]++记录第三列每个值的出现次数,next跳过后续判断
  • 处理第二个input.txt时,判断当前行第三列的值的出现次数是否≥4,满足条件则打印该行

方案二:结合sort、uniq、grep分步操作(逻辑清晰)

分两步筛选出需要保留的行:

  1. 提取第三列并筛选出现4次及以上的值,保存到临时文件:
cut -d';' -f3 input.txt | sort | uniq -c | awk '$1>=4 {print $2}' > keep_values.txt
  1. 过滤原文件,仅保留第三列值在临时文件中的行:
grep -Ff keep_values.txt input.txt

步骤解释:

  • cut -d';' -f3:提取文件的第三列内容
  • sort | uniq -c:对第三列值排序后统计每个值的出现次数
  • awk '$1>=4 {print $2}':筛选出出现次数≥4的值,写入keep_values.txt
  • grep -Ff keep_values.txt:按固定字符串匹配,从原文件中过滤出第三列值在keep_values.txt中的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:45:07