每隔50行求一次和的shell编程

1198阅读 0评论2010-07-29 greendays
分类:

[] [] [] []

如类似下面文件,我想每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了
__________________________________
纸上得来终觉浅,从此萧郎是路人^_^


|  |  | 
上一篇:怎么去掉tomcat的注释行
下一篇:cu 2010年系统架构师大会 参与心得