shell命令实现动态窗口的计算
时间:2011-02-23
来源:互联网
我有一批数据,格式如下,第一列为已排序的不连续自然数,总文件大概有5万多行:
711 4 8
892 3 6
956 2 5
10904 1 5
32210 5 12
38554 4 6
41362 0 1
56119 6 9
71326 2 6
71348 2 5
88300 8 10
90571 3 10
90606 2 6
。。。
想实现的是:以10000为步长,每5行进行一次计算,分别计算第二列的和与第三列的和,并输出这5行所在的区间范围以及区间大小(看第一列),也就是所得到的结果如下所示:
0-32210 15 36 32210
10000-56119 16 33 46119
20000-71326 17 18 51326
30000-71326 17 18 41326
40000-88300 18 31 48300
...
也就是说每5行就计算一次后两列的累加值,以10000为步长来移动窗口,第一列的区间大小是变动的(如10000-56119,20000-71326,即动态窗口),但落在每个区间的行数都是固定5行,最后一列为窗口大小(即第一列范围中的后一个数减前一个数)。到末尾时,若碰到最后一个区间的行数不足5行,则有多少行就计算那些行后两列的累加值,运行结束……
希望各路高手多多帮助,不胜感激!!!!!!!!!!跪求
711 4 8
892 3 6
956 2 5
10904 1 5
32210 5 12
38554 4 6
41362 0 1
56119 6 9
71326 2 6
71348 2 5
88300 8 10
90571 3 10
90606 2 6
。。。
想实现的是:以10000为步长,每5行进行一次计算,分别计算第二列的和与第三列的和,并输出这5行所在的区间范围以及区间大小(看第一列),也就是所得到的结果如下所示:
0-32210 15 36 32210
10000-56119 16 33 46119
20000-71326 17 18 51326
30000-71326 17 18 41326
40000-88300 18 31 48300
...
也就是说每5行就计算一次后两列的累加值,以10000为步长来移动窗口,第一列的区间大小是变动的(如10000-56119,20000-71326,即动态窗口),但落在每个区间的行数都是固定5行,最后一列为窗口大小(即第一列范围中的后一个数减前一个数)。到末尾时,若碰到最后一个区间的行数不足5行,则有多少行就计算那些行后两列的累加值,运行结束……
希望各路高手多多帮助,不胜感激!!!!!!!!!!跪求
作者: linaiting 发布时间: 2011-02-23
说实话,没有看懂唉
尤其是:
20000-71326
30000-71326
这两行就费解了……
而且71326前边只有9行,不是应该有10行吗?
尤其是:
20000-71326
30000-71326
这两行就费解了……
而且71326前边只有9行,不是应该有10行吗?
作者: dzhxc 发布时间: 2011-02-24
QUOTE:
说实话,没有看懂唉
尤其是:
20000-71326
30000-71326
这两行就费解了……
而且71326前边只有9行, ...
dzhxc 发表于 2011-02-24 10:53
尤其是:
20000-71326
30000-71326
这两行就费解了……
而且71326前边只有9行, ...
dzhxc 发表于 2011-02-24 10:53
因为原始数据没有20000~30000之间的啊,所以从20000开始和从30000开始是一样的

作者: 昭襄王 发布时间: 2011-02-24
回复 linaiting
不考虑效率的话。。。
复制代码
不考虑效率的话。。。
- #!/usr/bin/awk
-
- {
- a[NR]=$1;
- b[NR]=$2;
- c[NR]=$3;
- }
- END{
- step=0;
- while(1){
- for(i=1;i<=NR;++i){
- if(a[i]>=step){
- for(j=i;j<=i+4&&j<=NR;++j){
- sum2+=b[j];
- sum3+=c[j];
- }
- print step"-"a[j-1],sum2,sum3,a[j-1]-step;
- step+=10000;
- sum2=0;
- sum3=0;
- break;
- }
- }
- if(i>=NR)
- break;
- }
- }
作者: yx07004212 发布时间: 2011-02-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28