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

适配OpenWRT的`sort -k x -u`替代方案:移除指定列重复项

在OpenWRT Busybox中实现指定列无重复去重(无需排序)

Busybox自带的sort不支持-k参数,没法用常规的sort -k x -u按指定列去重,这里用Busybox内置的awk就能解决,而且不会改变原数据流的顺序:

核心命令

假设要去重的目标是第x列,执行以下命令即可:

awk -v col=x '!seen[$col]++'

示例演示

比如你需要处理第二列(x=2),输入流如下:

1 a
2 a
1 b
2 b

执行命令:

awk -v col=2 '!seen[$col]++'

输出结果:

1 a
1 b

命令逻辑

  • seen是awk的内置数组,用来记录指定列已经出现过的值
  • !seen[$col]++:当该列值第一次出现时,seen[$col]初始为0,取反后为真,打印当前行;同时seen[$col]自增为1。后续再遇到相同列值时,seen[$col]不为0,取反后为假,直接跳过该行。

自定义分隔符

如果你的数据列分隔符不是空格(比如逗号),可以用-F指定分隔符:

awk -F, -v col=3 '!seen[$col]++'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 08:12:04