求助--怎么计算一个文件中所有数据的平均值和最大值
-
- 帖子: 22
- 注册时间: 2012-06-19 19:18
求助--怎么计算一个文件中所有数据的平均值和最大值
一个文件中记录了一些浮点数。以空格分割,数据个数不确定。想计算文件中这些数的平均值和最大值。
对shell 不熟,对awk也是文盲。。各位大侠能否指点下。谢谢。
PS :我检查了一些cpu 内存的值放入了一个文件,数据没有分行列(也可以每个数据换一行,但数据类型都是一样的,比如都是浮点数据,或者都是整数)现在想统计这些值的平均值和最大值,并把结果输出某个文件中。
求shell 脚本。
谢谢
对shell 不熟,对awk也是文盲。。各位大侠能否指点下。谢谢。
PS :我检查了一些cpu 内存的值放入了一个文件,数据没有分行列(也可以每个数据换一行,但数据类型都是一样的,比如都是浮点数据,或者都是整数)现在想统计这些值的平均值和最大值,并把结果输出某个文件中。
求shell 脚本。
谢谢
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
[python]
from stats import Stat
import sys
s = Stat()
for l in sys.stdin:
for f in l.split():
s.add(float(f))
print(s.avg, s.max)
[/python]
假设以下脚本被你保存为 st.py,如下调用:
[bash]
python3 st.py < data_file > result_file
[/bash]
stats 模块在 winterpy 仓库中。
from stats import Stat
import sys
s = Stat()
for l in sys.stdin:
for f in l.split():
s.add(float(f))
print(s.avg, s.max)
[/python]
假设以下脚本被你保存为 st.py,如下调用:
[bash]
python3 st.py < data_file > result_file
[/bash]
stats 模块在 winterpy 仓库中。
- cjxgm
- 帖子: 1952
- 注册时间: 2010-04-23 20:40
- 系统: Arch Linux
- 来自: 浙江·杭州
- 联系:
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
把下面程序保存到 avemax.sh,然后 chmod +x avemax.sh,然后 ./avemax.sh < file
[bash]
#if 0
gcc -o $$ -x c $0&&./$$;rm -f $$;exit
#endif
#include<stdio.h>
main(n){double x,a=0,m=-1e100;for(n=0;scanf("%lg",&x)&&!feof(stdin);n++)
{a+=x;if(x>m)m=x;}printf("%lg %lg\n",a/n,m);}
[/bash]
(第一个输出是平均值,第二个是最大值)

[bash]
#if 0
gcc -o $$ -x c $0&&./$$;rm -f $$;exit
#endif
#include<stdio.h>
main(n){double x,a=0,m=-1e100;for(n=0;scanf("%lg",&x)&&!feof(stdin);n++)
{a+=x;if(x>m)m=x;}printf("%lg %lg\n",a/n,m);}
[/bash]
代码: 全选
cjxgm@clans /tmp$ cat test
1.1
2.4
3.5
3.2
cjxgm@clans /tmp$ ./avemax.sh < test
2.55 3.5
cjxgm@clans /tmp$
-
- 帖子: 22
- 注册时间: 2012-06-19 19:18
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
您好,我按您说的方法,结果不正确。cjxgm 写了:把下面程序保存到 avemax.sh,然后 chmod +x avemax.sh,然后 ./avemax.sh < file![]()
[bash]
#if 0
gcc -o $$ -x c $0&&./$$;rm -f $$;exit
#endif
#include<stdio.h>
main(n){double x,a=0,m=-1e100;for(n=0;scanf("%lg",&x)&&!feof(stdin);n++)
{a+=x;if(x>m)m=x;}printf("%lg %lg\n",a/n,m);}
[/bash](第一个输出是平均值,第二个是最大值)代码: 全选
cjxgm@clans /tmp$ cat test 1.1 2.4 3.5 3.2 cjxgm@clans /tmp$ ./avemax.sh < test 2.55 3.5 cjxgm@clans /tmp$
您能不帮看下。我把我的两个数据文件也贴上来。您帮看看。
cpuReport.txt 里面现在是 ×××%, 不好处理的话,可以先处理成对应的小数。
您的脚本中,不用在第一行加 #! /bin/bash 吗?
我想最后处理完的结果还是个整数或者浮点数。
- 附件
-
- memoryReport.txt
- 需要处理的文件
- (1 MiB) 已下载 45 次
-
- cupReport.txt
- 需要处理的文件
- (1.02 MiB) 已下载 43 次
上次由 hhht 在 2012-09-08 18:26,总共编辑 1 次。
-
- 帖子: 22
- 注册时间: 2012-06-19 19:18
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
您好。请看我4楼贴的需要处理的代码,我试了下您的脚本。提示第二行有错。对脚本实在不熟,不知道错在哪了。谢谢您。lilydjwg 写了:[python]
from stats import Stat
import sys
s = Stat()
for l in sys.stdin:
for f in l.split():
s.add(float(f))
print(s.avg, s.max)
[/python]
假设以下脚本被你保存为 st.py,如下调用:
[bash]
python3 st.py < data_file > result_file
[/bash]
stats 模块在 winterpy 仓库中。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
你的数据文件格式太奇葩了……这样执行好了:hhht 写了: 您好。请看我4楼贴的需要处理的代码,我试了下您的脚本。提示第二行有错。对脚本实在不熟,不知道错在哪了。谢谢您。
[bash]tr -d '\0%' < data_file | python3 st.py > result_file[/bash]
-
- 帖子: 22
- 注册时间: 2012-06-19 19:18
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
不知道错在哪了lilydjwg 写了:你的数据文件格式太奇葩了……这样执行好了:hhht 写了: 您好。请看我4楼贴的需要处理的代码,我试了下您的脚本。提示第二行有错。对脚本实在不熟,不知道错在哪了。谢谢您。
[bash]tr -d '\0%' < data_file | python3 st.py > result_file[/bash]

文件格式如果不好,可不可以在脚本里先整理好,然后再处理。
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
我那里贴了两段代码,把第一段保存为 st.py,执行第二段。hhht 写了:不知道错在哪了lilydjwg 写了:你的数据文件格式太奇葩了……这样执行好了:hhht 写了: 您好。请看我4楼贴的需要处理的代码,我试了下您的脚本。提示第二行有错。对脚本实在不熟,不知道错在哪了。谢谢您。
[bash]tr -d '\0%' < data_file | python3 st.py > result_file[/bash]![]()
文件格式如果不好,可不可以在脚本里先整理好,然后再处理。
- cjxgm
- 帖子: 1952
- 注册时间: 2010-04-23 20:40
- 系统: Arch Linux
- 来自: 浙江·杭州
- 联系:
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
数据开头有那么多没用的字节当然会不正确hhht 写了:结果不正确。
已改,加了除去多余字节
[bash]
#if 0
gcc -o $$ -x c $0&&sed 's/[^0-9.\n\r\t ]//g'|./$$;rm -f $$;exit
#endif
#include<stdio.h>
main(n){double x,a=0,m=-1e100;for(n=0;scanf("%lg",&x)&&!feof(stdin);n++)
{a+=x;if(x>m)m=x;}printf("%lg %lg\n",a/n,m);}
[/bash]
-
- 帖子: 22
- 注册时间: 2012-06-19 19:18
Re: 求助--怎么计算一个文件中所有数据的平均值和最大值
感谢两位朋友的帮助。万分感谢。想送个感谢 ,没找到怎么送出感谢,是有权限限制吗?想给两位送个感谢。
今天开始 好好学shell 和python。
以后请多多指教。
今天开始 好好学shell 和python。
以后请多多指教。