分页: 1 / 1

用bash脚本做统计学作业--第一个Linux Shell脚本

发表于 : 2008-03-13 2:59
HuntXu
无聊了,那天没去上课,然后又要做作业...作业要求用excel...我机上没有excel,用OOo的电子表格捣鼓了一个晚上,最后还要保存成xsl格式...
然后最近在看脚本,就写出这么个东西来,原发我的校内主页...但人迹罕至...所以贴到这里,看高手们还有什么更好的建议,不断学习中~~~


3月4日统计学作业~~课本60页习题第4题的(1)、(2)小题~~~

解题过程如下(实践证明:linux的shell太强大了~~~)

原始数据(表2.24):灯泡使用寿命测试结果(单位:小时)
我把那些数据输入到了statistics...

代码: 全选

hunt@bubble:~/Desktop$ cat statistics
700 716 728 719 685 709 691 684 705 718 706 715 712 722 691 708 690 692 707 701 708 729 694 681 695 685 706 661 735 665 668 710 693 697 674 658 698 666 696 698 706 692 691 747 699 682 698 700 710 722 694 690 736 689 696 651 673 749 708 727 688 689 683 685 702 741 698 713 676 702 701 671 718 707 683 717 733 712 683 692 693 697 664 681 721 720 677 679 695 691 713 699 725 726 704 729 703 696 717 688
(1)把这堆数据进行排序;
(2)以组距为10进行等距分组,整理成频数分布表,并绘制直方图。


然后写了这么个bash脚本:

代码: 全选

hunt@bubble:~/Desktop$ cat tongji
#!/bin/bash

for num in $(strings $1)
        do
                echo    $num>>temp0
                let     t=$num/10
                echo    $t>>temp1
        done

sort -n temp0>>result
sort -n temp1|uniq -c>>temp2

echo    '组次     频数'>>result

cat temp2|

while read line
        do
                t=${line:2}
                let     t*=10
                low=$t
                let     high=$low+10
                echo    $low~$high      ${line:0:2}>>result
        done

rm -rf temp[012]

exit 0
然后:

代码: 全选

hunt@bubble:~/Desktop$ ./tongji statistics
结果如下:

代码: 全选

hunt@bubble:~/Desktop$ cat result
651
658
661
664
665
666
668
671
673
674
676
677
679
681
681
682
683
683
683
684
685
685
685
688
688
689
689
690
690
691
691
691
691
692
692
692
693
693
694
694
695
695
696
696
696
697
697
698
698
698
698
699
699
700
700
701
701
702
702
703
704
705
706
706
706
707
707
708
708
708
709
710
710
712
712
713
713
715
716
717
717
718
718
719
720
721
722
722
725
726
727
728
729
729
733
735
736
741
747
749
组次     频数
650~660 2
660~670 5
670~680 6
680~690 14
690~700 26
700~710 18
710~720 13
720~730 10
730~740 3
740~750 3
成功证明:电脑是给人使用的工具...从此爱上统计学...

问题是...如果我把那个脚本直接发给统计学老师他知不知道是什么...信息学院的喔...

为什么非得要用excel来做作业,题目是给人想方法解的,又不是让人找工具解的...

重要的是思想...还有一颗开源的心~~~

发表于 : 2008-03-13 3:12
HuntXu

代码: 全选

hunt@bubble:~/Desktop$ date +%T.%N;./tongji statistics;date +%T.%N
03:20:30.925365630
03:20:31.265498692
0.34秒100个数据...
在excel里要好多公式...

多次测试,发现平均时间在0.2秒左右...

excel里光用鼠标点个单元格都不止这么久吧...

发表于 : 2008-03-13 3:19
HuntXu
觉得中间用的缓存是不是多了点...
希望高手们给点意见...

发表于 : 2008-03-13 3:24
carbont
玩不了这个──就是写论文必须要word的比较接受不了。有一个老师一定要我交word的,我争了半天才让我交PDF的了──最后给我60分──我帮人写的那个得了92分。

相当多老师──恨恨地说的话:没有本事才会做……说不严密,还是不说了。

发表于 : 2008-03-13 3:26
carbont
那个──我是灌水滴~~~~

发表于 : 2008-03-13 3:32
HuntXu
carbont
难怪你比我晚注册文章数多那么多... :shock:

发表于 : 2008-03-13 17:35
CS772421东
楼主!能不能帮我做个福利彩票双色球的开奖统计并预测的脚本?开奖号码数据可由我自己填上去!谢了!

发表于 : 2008-03-13 17:46
xiooli
貌似比excel快,不过lz还得自己写脚本。。。

发表于 : 2008-03-13 17:48
aitilang
要把写脚本和调试的时间也算进去啊。。。
其实也不少了

发表于 : 2008-03-13 17:50
spectator
居然有统计学要求用Excel的.......

发表于 : 2008-03-14 14:09
HuntXu
xiooli 写了:貌似比excel快,不过lz还得自己写脚本。。。
aitilang 写了:要把写脚本和调试的时间也算进去啊。。。
其实也不少了
这是第一个脚本...差不多就是我在excel输入公式的时间写出来的...
不过以后会越来越快不可否认吧~

发表于 : 2008-03-14 14:30
yaoms
:D 支持楼主

发表于 : 2008-03-14 15:08
bones7456
LZ,计算脚本执行的时间,要用 time .

time ./tongji statistics

即可.
执行 date命令也是需要时间的啊.

发表于 : 2008-03-14 17:21
linxiao
看了,你们的争论,我想起一个问道:
你们说奔驰车和拖拉机去走山路那个快呢?