例えば、リダイレクトでファイルへ出力中にファイル末尾を動的に見たいとき、こんなことをするらしい。
% tail -f filename
そうするとファイルが書き込まれるたびに末尾がぞろぞろと動的に出てくる。これは便利。
これをperlでも実現できるみたい。基本的にtailが無い時に使える。
# ファイルを開く
open( INPUT, "<$ARGV[0]" ) or die; # ファイルの末尾まで移動する
seek( INPUT, 0, 2 );
# ファイルの監視を開始する
while ( 1 ) {
# 一行ずつ読み込み続け、表示する while ( < input > ) {
print $_;
}
# 50ミリ秒待って再度読み込む
select( undef, undef, undef, 0.05 );
}
参考URL
もともとは、perlで時間を指定してプログラムを制御できないかなぁと考えていたところ、こんなサイトを見つけたので、儲けもん。スリープを使えばいいのね。
今現在、センシングしたデータをリアルタイムでプロットするスクリプトが作れたら面白れーと思っていたので、ちょっとした収穫。
ということでメモ。
あ、あと追記。
コマンドのリダイレクトをするとファイルへ出力できて便利なんだけど、そのかわり標準出力をしなくなる。
ファイルへ出力をするけれども、標準出力をしたい!って時にはこんな欲張りなコマンドを。
% command | tee filename
これは便利。
ラベル
2009年11月12日木曜日
gnuplotメモ
set xdata time
set timefmt "%Y/%m/%d %H:%M:%S"
set format x "%H:%M"
上記の記述で、”X軸を時間軸とする”、”タイムフォーマットの指定”、”記述フォーマットの指定”をする。
set xlabel "time"
set ylabel "accelX"
X軸、Y軸のラベル指定
set style line 1 lt 1 lw 3
set style line 2 lt 1 pt 7
set style line 3 lt 1 pt 8
set style line 4 lt 1 pt 9
set term postscript
set output "accelX.ps"
ポストスクリプトファイルへの出力
#accelX <- コメントは'#'
plot "04.txt" using 1:7 title "nodeID: 04" with lines, \ <- 改行は'\'で。
"05.txt" using 1:7 title "nodeID: 05" with lines, \
"06.txt" using 1:7 title "nodeID: 06" with lines, \
"07.txt" using 1:7 title "nodeID: 07" with lines
pause -1
この記述により、コマンドラインから、"gnuplot file"と実行した際に、グラフだけ出力した状態で止められる。
set timefmt "%Y/%m/%d %H:%M:%S"
set format x "%H:%M"
上記の記述で、”X軸を時間軸とする”、”タイムフォーマットの指定”、”記述フォーマットの指定”をする。
set xlabel "time"
set ylabel "accelX"
X軸、Y軸のラベル指定
set style line 1 lt 1 lw 3
set style line 2 lt 1 pt 7
set style line 3 lt 1 pt 8
set style line 4 lt 1 pt 9
set term postscript
set output "accelX.ps"
ポストスクリプトファイルへの出力
#accelX <- コメントは'#'
plot "04.txt" using 1:7 title "nodeID: 04" with lines, \ <- 改行は'\'で。
"05.txt" using 1:7 title "nodeID: 05" with lines, \
"06.txt" using 1:7 title "nodeID: 06" with lines, \
"07.txt" using 1:7 title "nodeID: 07" with lines
pause -1
この記述により、コマンドラインから、"gnuplot file"と実行した際に、グラフだけ出力した状態で止められる。
ps -> gif
gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- foo.ps | ppmtogif >foo.gif
デフォルトの解像度は 72×72 ,“-r600x600” のようなオプションで解像度が変えられるようだ。
gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- -r600x600 foo.ps | ppmtogif >foo.gif
周囲に余白がある場合は,以下のように。
gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- foo.ps | pnmcrop | ppmtogif >foo.gif
上で使っている ppmtogif,pnmcrop は PBMPLUS や NetPBM というフリーソフトの画像フォーマット変換パッケージに入っているみたい。この ppmtogif の部分を変えればいろいろな形式に変換可能。
参考URL
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Ghostscript
デフォルトの解像度は 72×72 ,“-r600x600” のようなオプションで解像度が変えられるようだ。
gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- -r600x600 foo.ps | ppmtogif >foo.gif
周囲に余白がある場合は,以下のように。
gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- foo.ps | pnmcrop | ppmtogif >foo.gif
上で使っている ppmtogif,pnmcrop は PBMPLUS や NetPBM というフリーソフトの画像フォーマット変換パッケージに入っているみたい。この ppmtogif の部分を変えればいろいろな形式に変換可能。
参考URL
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Ghostscript
登録:
投稿 (Atom)