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

使用awk基于两列自定义规则(互换列值算重复)实现CSV去重

双列分号分隔CSV互换重复行清理方案

实现逻辑

  • 定义行唯一判定键:将每行的两个字段按字典序排序后拼接为统一key,互为互换关系的两行会生成完全相同的key
  • 两次读取输入文件:第一次统计每个key的出现次数,第二次仅输出对应key出现次数为1的行,即可把所有存在互换重复的行全部移除

完整awk实现代码

BEGIN {
    # 定义字段分隔符为分号
    FS = ";"
}
# 第一次读取文件,统计每个key的出现次数
NR == FNR {
    key = $1 < $2 ? $1 "|" $2 : $2 "|" $1
    count[key]++
    next
}
# 第二次读取文件,仅输出无重复的行
{
    key = $1 < $2 ? $1 "|" $2 : $2 "|" $1
    if (count[key] == 1) {
        print $0
    }
}

运行命令

将代码保存为dedup.awk后执行:

awk -f dedup.awk your_file.csv your_file.csv

示例运行效果

针对你提供的输入文件,运行后输出结果为:

b;c
x;y

可选调整:保留每组互换行的第一条

如果需求是去重后保留每组互换行的第一条而非全部移除,只需将第二次遍历的判断逻辑修改为:

{
    key = $1 < $2 ? $1 "|" $2 : $2 "|" $1
    if (count[key]-- > 0) {
        print $0
    }
}

调整后输出结果为:

a;b
b;c
c;d
x;y

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:07