|
发表于 2004-4-11 15:29:59
|
显示全部楼层
gnuplot是数据作图用的
做科学研究方面的这个用的很多
强烈建议参考一下expect,尽量让工作自动化,省出时间玩
我的一个自动下载合并数据并画图的脚本
#!/usr/bin/expect
#Li HM lihm0@163.com
set timeout -1
set id [lindex $argv 0]
spawn date +%d-%m-%y-%H-%M
expect
set LDIR [string range $expect_out(buffer) 0 13]
set LDIR "/home/eagle/tmp/sem/$LDIR"
spawn mkdir $LDIR
send "cd $LDIR\r"
log_user 0
spawn ftp sunshine
expect "Name"; send "\r"
expect "ftp>"; send "quote authenticate lihm\r"
expect "password"; send "quote response mypasswd\r"
expect " ASS"; send "user lihm@nfe\r"
expect " assword:"; send "mypasswd\r"
log_user 1
expect "logged"; send "prompt\r"
expect "off"; send "cd $id\r"
expect "succ"; send "lcd $LDIR\r"
expect "now"; send "mget *.gz\r"
expect "complete"; send "bye\r"
#以上取下数据
spawn $env(HOME)/script/semcomb $LDIR #合并处理数据
sleep 5
#调用idl进行数据绘图
cd $env(HOME)/idl
spawn idl
expect "IDL>"; send ".r SEM\r"
expect "IDL>"; send "exit\r"
#绘图完毕,把看图软件调出来,以便检测结果
cd $env(HOME)/data
exec gqview
以上是主程序
下面分程序semcomb
#!/bin/bash
DATAFILE=$HOME/data/tmpdata.dat
rm -f $DATAFILE
cd "$1"
tar zxvf sem.tar.gz
sed -e '/^Start/q' Au?000-*\ 0.dat >$DATAFILE
for j in \ 1 2 3 4 5 6 7 8 9
do
for i in Au?000*$j[0-9].dat
do
if [ -f "$i" ]
then
sed -f $HOME/script/semdata.sed "$i" >>$DATAFILE
fi
done
done
rm -rf Au?000-*.dat
sed脚本semdata.sed
#Script Name: semdata.sed
#combine sem data and delete common head
1,/^Start/d
${
/.\{42\}/!d
}
本想用expect和tcl完成一个程序,不需要另外的semcomb结果,边学边改,出错太多,放弃。现在倾向于怎么方便怎么算。 |
|