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

使用Shell命令统计文件中无序成对文本的出现次数

解决互为逆序成对文本的统计问题

嘿,这个需求太常见啦!要把A,B和B,A这类互为逆序的成对文本当成同一种情况统计,核心思路就是先把每一对的顺序标准化,让逆序的条目变成完全相同的字符串,之后再统计就简单多了。

直接得到结果3的命令

如果你的目标就是拿到最终的不同对数量(也就是3),直接用这条命令就行:

awk -F',' '{print ($1 < $2) ? $1","$2 : $2","$1}' input.txt | sort | uniq | wc -l

分步拆解每一步

咱们把命令拆开来,看看每部分都在做什么:

  • awk -F',' '{print ($1 < $2) ? $1","$2 : $2","$1}':
    用逗号分隔每一行的两个元素,再用三元运算符做判断——如果第一个元素的字典序小于第二个,就原样输出;否则交换两者顺序后输出。这样B,A会变成A,B,D,A会变成A,D,所有逆序对都被统一成了相同的格式。
  • sort:
    因为uniq只能识别连续重复的行,所以先排序让相同的标准化条目聚在一起,确保后续统计准确。
  • uniq:
    去掉重复的条目,只保留每个唯一的标准化对。
  • wc -l:
    统计剩下的行数,也就是不同对的数量,这里正好是你要的3。

查看每对的具体出现次数

如果还想知道每对到底出现了几次,可以把wc -l换成uniq -c,命令变成:

awk -F',' '{print ($1 < $2) ? $1","$2 : $2","$1}' input.txt | sort | uniq -c

执行后会输出:

2 A,B
      2 A,C
      2 A,D

能清楚看到每对都出现了2次,总共有3个不同的对,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:04:02