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

如何用tawk/awk基于多列组合去重?awk命令异常求助

解决方案

一、用tawk基于第二+第三列组合去重CSV

把原来单列去重的数组索引改成第二列和第三列的联合键即可,修改后的命令如下:

tawk -csv 'line {![info exists seen($F(2),$F(3))]} {set seen($F(2),$F(3)) 1; print}' inp.csv > out.csv

核心逻辑是将第二、第三列的组合作为数组seen的判断键,仅保留该组合首次出现的行。

二、修复awk处理竖线分隔文件的去重问题

你之前的命令出错,是因为竖线|是正则元字符,直接写*|*会被解析成“零或多个空格 或 零或多个空格”,而非“空格+竖线+空格”。需要转义竖线并明确分隔规则,修改后的命令:

awk -F ' *\\| *' '!uniq[$2,$3]++' test.csv > test_out.csv

如果文件中竖线前后无空格,可简化为-F '\\|'直接按竖线分割字段,再基于第二、第三列组合去重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:08:12