【求助】小弟有个棘手问题(将文件内容读入数组+TK作图)

【求助】小弟有个棘手问题(将文件内容读入数组+TK作图)

小弟有个棘手问题,关于bash加Tcl&TK,希望你可以帮我,谢谢,问题如下:
我收集了网卡接受和发送数据的2个txt文件,如说记录接受数据的文本文件里有200行,每行有一个数字,每秒对应一个数据,一共200秒,我想问问,我怎么用Bash读该文本文件,读里面的每行数据,记录在一维数组里,a是网络流量,i 是秒数,以便之后统计最大,最小值,平均值。 并画出这个图,输出 。
主要问题1:用Bash读该文本文件,读里面的每行数据,记录在一维数组里
主要问题2:怎么画这个图啊,最好用Tcl&TK画出这个图,我是在visual Tcl 的,为了搞个用户可视界面      
第一个问题:
复制内容到剪贴板
代码:
[color=blue]-(guest@mac:tty1)-(tmp)-
[20954 0] %[/color] cat a
hello world
hello linux
[color=blue]-(guest@mac:tty1)-(tmp)-
[20954 0] %[/color] i=0
[color=blue]-(guest@mac:tty1)-(tmp)-
[20954 0] %[/color] while read line; do a[$((i++))]=$line; done < a
[color=blue]-(guest@mac:tty1)-(tmp)-
[20954 0] %[/color] for ((i = 0; i < ${#a[*]}; ++i)); do echo ">>> ${a[$i]}"; done
>>> hello world
>>> hello linux
[color=blue]-(guest@mac:tty1)-(tmp)-
[20954 0] %[/color]
      
既然要用 Tcl/Tk,文件的处理也可以用 Tcl 啊      
好啊 dearvoid,
太感谢了,我试试你的Bash,你说的对,我也可以用tcl来处理这个文件和相应操作,但是tcl我懂得不是很多,用visual tcl是想给我的bash skript做个用户界面,其实我也在徘徊,到底哪个更快速的达到目的,是用 Bash,还是Tcl? 生活往往是因为有了选择,才变得复杂,哎!
小弟还有个问题,就是问题2,用TK画这个一维数组的图,然后保存,应该没问题吧?

      
Tk 我只有一点点了解,没写过 code
你将数据存储在 shell 变量中,如何跟 Tk 通信呢?总觉有些不方便      
我是在tcl 和tk环境下,用Visual Tcl创建用户界面的, 关于和bash的联系,我是在Visual Tcl下建立一个函数,在所有的bash语句前加上exec,这样就可以让 bash和tcl联系了。不过关于变量的传递,我也不知道可不可以,要试一下。你写的代码很好,我已经用它读我的数据文件成功了。其实我只是要基于数组a的数据统计,比如说算前后1秒的差值,变成另外一个数组b,之后找出b的最大值,最小值,和平均值。我写了算b的代码:

#!/bin/sh
# to read  numbers from txt and fill them to a carry
cat /home/snake/a.txt
i=0
while read line; do a[$((i++))]=$line; done < a.txt
for ((i = 0; i < ${#a
  • }; ++i)); do echo " ${a[$i]}"; done

    # to get the differenz between a[i+1] and a
    for ((i = 0; i < ${#a
    • }; ++i));do b[$((i++))]={${a[$((i++))]} - ${a[$i]}};done
      for ((i = 0; i < ${#b
    • }; ++i)); do echo " ${b[$i]}"; done

      我的这句计算b的语句好像有问题,你能不能看看?
      for ((i = 0; i < ${#a
    • }; ++i));do b[$((i++))]={${a[$((i++))]} - ${a[$i]}};done
            
  • 苍天之下,厚土之上,竟有如此奇人异士、文人墨客!讥讽于谈笑间,笑骂于无形中,层次之高,境界之深,非我等所能匹及,偶像啊!!!仿高人此文,照作一篇,以表仰慕之情。。。      
    复制内容到剪贴板
    代码:
    for ((i = 0; i < ${#a[*]}; ++i)); do
        b[$(([color=red]i++[/color]))]={${a[$(([color=red]i++[/color]))]} - ${a[$i]}};
    done
    for 循环中已经有个 ++i 了,你的循环体里面怎么又有两个 i++ ?      
    还有,你的 var={...} 是什么语法?      
    [QUOTE=dqi1107]苍天之下,厚土之上,竟有如此奇人异士、文人墨客!讥讽于谈笑间,笑骂于无形中,层次之高,境界之深,非我等所能匹及,偶像啊!!!仿高人此文,照作一篇,以表仰慕之情。。。[/QUOTE]
    吾愧不能及也