如何根据以下数据中第一个逗号之前的数字查找重复行?
输入:
112112112,00,00,00
110110,01,01,02
112112112,11,11,888
110110,99,88,8
410410,22,22,22
输出:
112112112 (2)
110110 (2)
答案1
虽然你可以修改钢铁司机的解决方案对于您之前的类似问题,这里有一个快速而肮脏的管道:
cut -d, -f1 < input | sort | uniq -c | awk '$1 > 1 { print $2, "(" $1 ")" }'
答案2
与单awk
:
awk -F, '{ a[$1]++ }END{ for(i in a) if(a[i]>1) printf "%-12s(%d)\n",i,a[i] }' file
输出:
110110 (2)
112112112 (2)
答案3
将您的输入文件通过管道传输到以下内容应该可以做到:
cut -f1 -d, | sort | uniq -cd
输出与您发布的不完全相同;重复计数是第一列,而不是最后一列并带括号:
2 110110
2 112112112
调用要求cut
隔离第一个逗号分隔字段,sort
确保相同的字段按顺序排列,这是对uniq
这些字段进行分组所必需的;-c
要求计数并-d
仅显示重复项。对整个输入进行排序可能不是实现您所要求的最有效的方法,但只有当您的输入变得非常大时,这才应该成为一个问题。