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

基于第2列值判断第3列唯一性,为每行添加same/diff标记

按列分组标记文本行的一致性

原始文件内容

$ cat test.txt
49808830/ccs 9492 TACA 3
175833950/ccs 971 ACCC 1
180422692/ccs 971 ACCC 10
110952448/ccs 9714 TAGAG 2
117309969/ccs 9714 TAGAG 4
119998610/ccs 9714 TAGAG 5
171509463/ccs 9714 TAGAT 4

需求说明

针对上述文本文件,需按第二列的唯一值分组处理:

  • 若某组内所有行的第三列值仅存在一种,则给该组所有行末尾添加 same
  • 若组内第三列存在多种不同值,则给该组所有行末尾添加 diff

解决方案

使用awk命令完成两次扫描即可实现:

awk 'NR==FNR {arr[$2][$3]++; next} 
     {print $0, (length(arr[$2]) == 1 ? "same" : "diff")}' test.txt test.txt

命令逻辑

  1. 第一次遍历文件(NR==FNR):用二维数组arr[$2][$3]记录每个第二列对应的第三列值出现情况,通过length(arr[$2])可获取该组内第三列的不同值数量
  2. 第二次遍历文件:判断当前行第二列对应的第三列不同值数量,等于1则输出行内容加same,否则加diff

预期输出

49808830/ccs 9492 TACA 3 same # 第二列唯一,对应第三列仅一种值,标记same
175833950/ccs 971 ACCC 1 same 
180422692/ccs 971 ACCC 10 same 
110952448/ccs 9714 TAGAG 2 diff
117309969/ccs 9714 TAGAG 4 diff
119998610/ccs 9714 TAGAG 5 diff 
171509463/ccs 9714 TAGAT 4 diff # 该组第三列存在TAGAG和TAGAT两种值,标记diff

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 11:42:59