[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

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

帖子
4 
主题
1 
精华
0 
可用积分
7  
专家积分
0 (本版:0)
在线时间
10 小时 
注册时间
2010-07-27 
最后登录
2010-07-29 

状态:...当前离线...

[微博] [博客] [短信]


如类似下面文件,我想每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
希望有简洁的一行命令解决,谢谢!


好看的附件 ((solinir))

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

帖子
950 
主题
47 
精华
0 
可用积分
579  
专家积分
5 (本版:0)
在线时间
152 小时 
注册时间
2009-04-07 
最后登录
2010-07-29 

状态:...当前在线...

[微博] [博客] [短信]


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



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

帖子
4 
主题
1 
精华
0 
可用积分
7  
专家积分
0 (本版:0)
在线时间
10 小时 
注册时间
2010-07-27 
最后登录
2010-07-29 

状态:...当前离线...

[微博] [博客] [短信]


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

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

帖子
950 
主题
47 
精华
0 
可用积分
579  
专家积分
5 (本版:0)
在线时间
152 小时 
注册时间
2009-04-07 
最后登录
2010-07-29 

状态:...当前在线...

[微博] [博客] [短信]


回复 3# frewise 


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

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

帖子
950 
主题
47 
精华
0 
可用积分
579  
专家积分
5 (本版:0)
在线时间
152 小时 
注册时间
2009-04-07 
最后登录
2010-07-29 

状态:...当前离线...

[微博] [博客] [短信]


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

回复 17# yuloveban 


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


10-16 17:42
查看更多