按数据的区间进行处理

12 篇文章 0 订阅

file文件数据内容如下所示:


A  0   0.00521
A  1   0.0111
A  2   0.0173
A  3   0.0281
A  4   0.0423
A  5   0.0606
A  6   0.0938
A  7   0.128
A  8   0.159
A  9   0.174
A  10  0.183
A  11  0.19
A  12  0.2
A  13  0.216
A  14  0.236
A  15  0.257
A  16  0.276
A  17  0.292
A  18  0.309
A  19  0.327
A  20  0.342
A  21  0.36
A  22  0.375
A  23  0.392
A  24  0.413
A  25  0.434
A  26  0.454
A  27  0.474
A  28  0.489
A  29  0.505
A  30  0.521
A  31  0.232
A  32  0.205
A  33  0.177
A  34  0.157
A  35  0.14
A  36  0.133
A  37  0.128
A  38  0.126
A  39  0.122
A  40  0.117
A  41  0.109
A  42  0.0973
A  43  0.0841
A  44  0.0706
A  45  0.0629
A  46  0.0549
A  47  0.0459
A  48  0.0369
A  49  0.0285
A  50  0.0211
A  51  0.0135
A  52  0.00663
A  53  0.839
A  54  0.848
A  55  0.857
A  56  0.864
A  57  0.872
A  58  0.878
A  59  0.885
A  60  0.885
B  0   0.000449
B  1   0.00102
B  2   0.00208
B  3   0.00352
B  4   0.00569
B  5   0.00977
B  6   0.0161
B  7   0.0208
B  8   0.0255
B  9   0.0303
B  10  0.0347
B  11  0.0392
B  12  0.0433
B  13  0.0473
B  14  0.0511
B  15  0.0538
B  16  0.0561

按第三列值的大小分成区间,比如第三列小于0.3为small,大于0.3的为big,将第二列值处理成区间模式,比如第二列0-17均小于0.3,类似地,整个就可以简化为:

A  0   17  small
A  18  30  big
A  31  52  small
A  53  60  big
B  0   16  small


解法如下:

awk -vp=0.3 '{x=($3-p>0)?"big":"small"}$1!=n||$2-e!=1||x!=s{if(n)print n,b,e,s;b=$2}{n=$1;e=$2;s=x}END{print n,b,e,s}' file


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值