免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7114 | 回复: 5
打印 上一主题 下一主题

[文本处理] 数据区间处理请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-10 08:43 |显示全部楼层 |倒序浏览
本帖最后由 bmechuangye 于 2013-09-10 09:59 编辑

各位,我要将数据 dat.zip (379 Bytes, 下载次数: 16)



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

按第三列值的大小分成区间,比如第三列小于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
捣鼓了很久,不知如何下手,请教高手指点一下,谢谢!

论坛徽章:
0
2 [报告]
发表于 2013-09-10 09:56 |显示全部楼层
谢谢二位,抱歉,我重新编辑了一下问题。求指教,谢谢!

论坛徽章:
0
3 [报告]
发表于 2013-09-10 11:36 |显示全部楼层
回复 5# chaseey

强大,处理前面附件里的数据没有任何问题,谢谢!
但上面数据加上
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
dat01.zip (471 Bytes, 下载次数: 11)




并且打印语句改为print $1,MIN,MAX,A[i-1],运行结果
$ awk -f test.awk dat01.txt
B 0 17 small
B 18 30 big
B 31 52 small
B 53 60 big

出现问题了,结果第一列全变成B的了。

论坛徽章:
0
4 [报告]
发表于 2013-09-10 17:06 |显示全部楼层
回复 8# jason680


强!感谢jason680的热心解答,试了试,很好!

论坛徽章:
0
5 [报告]
发表于 2013-09-10 18:04 |显示全部楼层
本帖最后由 bmechuangye 于 2013-09-10 18:05 编辑

jason680,能否请您解释一下“$1!=N||$2-e!=1||x!=r{if(N)print N,s,e,r;s=$2}{N=$1;e=$2;r=x}”这部分的具体意思?我也经常用awk,但发现还是菜鸟一个,哈哈,这个怎么发现很难理解啊。
谢谢!

论坛徽章:
0
6 [报告]
发表于 2013-09-11 21:38 |显示全部楼层
回复 11# jason680


  牛!谢谢jason680指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP