首页 > 解决方案 > 百组号

问题描述

我的文件如下,其中有数千个数字。我想将所有数字分组为数百个。因此,所有小于 100 的数字将被组合在一起。例如,abc,abc1 将是 group1。abc2 和 abc4 将是 group2,abc5 和 abc6 将是 group3,abc7 将是 group4 等等

1:

abc,63.5
abc1,75.5
abc2,105.2
abc4,199
abc5,205
abc6,240.0
abc7,350.6
abc8,422
abc9,410
abc10,1000
abc11,2001

我试过了

cut -d, f1 x.txt | uniq -c

但没有得到想要的结果。有人可以帮忙吗?

标签: bashksh

解决方案


在根据数百个所属的组为组分配编号时:

cut -d, -f 2 x.txt  | gawk '{ split($0/100,g,"."); print "gr"g[1]+1,"\t",$1 }'

结果

gr1      63.5
gr1      75.5
gr2      105.2
gr2      199
gr3      205
gr3      240.0
gr4      350.6
gr5      422
gr5      410
gr11     1000
gr21     2001

如果要对包括 abc 在内的所有行进行排序...

gawk -v FS="," '{ split($2/100,g,"."); print "gr"g[1]+1"\t"$1","$2 }' x.txt

结果

gr1     abc,63.5
gr1     abc1,75.5
gr2     abc2,105.2
gr2     abc4,199
gr3     abc5,205
gr3     abc6,240.0
gr4     abc7,350.6
gr5     abc8,422
gr5     abc9,410
gr11    abc10,1000
gr21    abc11,2001

推荐阅读