Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2072300
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2010-07-29 18:28:31

[] [] [] []

如类似下面文件,我想每50行求一次和,取平均值,剩余不足50行时,根据行数求平均值,然后打印出来
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
……
假如原有文件有202行,每行均为1,结果形式应为5行:
1
1
1
1
1
希望有简洁的一行命令解决,谢谢!


|  |  | 

  1. awk  '{num+=$0;if(FNR==50){print num/FNR;FNR=0;num=0}} END{print num/FNR}' urfile
复制代码
__________________________________
纸上得来终觉浅,从此萧郎是路人^_^


|  |  | 


回复  好看的附件 
测试正确!真是高手云集,多谢!

回复  frewise 


    还需要修改下,没有考虑文件为空的情况。。
  1.     awk  '{num+=$0;if(FNR==50){print num/FNR;FNR=0;num=0}} END{if(FNR)print num/FNR}' urfile
  2.    
复制代码
__________________________________
纸上得来终觉浅,从此萧郎是路人^_^

本帖最后由 好看的附件 于 2010-07-28 15:46 编辑

回复  yuloveban 


    可以呀, if(FNR==50){print num/FNR;FNR=0;num=0}这里有条件的,如果最后不足50行自然就不会有FNR=0;num=0了
__________________________________
纸上得来终觉浅,从此萧郎是路人^_^


|  |  | 
阅读(1205) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~