18. 2回の表 (2 アウト)
#! /bin/gawk -f
## graph.cgi
BEGIN {
data_file = "data.txt";
ORS = "rn";
split(ENVIRON["QUERY_STRING"], arr_query, "&");
for (i in arr_query) {
split(arr_query[i], arr_query_val, "=");
query_name = arr_query_val[1];
query_str = arr_query_val[2];
query[query_name] = query_str;
}
GET なので環境変数からデータを格納する。
2011年11月19日 OSC2011 Tokyo Fall 18
19. 2回の表 (2 アウト)
now = strftime("%Y/%m/%d-%H:%M");
printf("%s %sn", now, query["weight"])>>data_file;
close(data_file);
print "
set xdata timen
set timefmt '%Y/%m/%d-%H:%M:%S'n
set terminal pngn
set yrange [0:100]n
set xlabel 'Date'n
set ylabel 'Weight (Kg)'n
set output 'graph.png'n
plot '" data_file "' using 1:2 title 'Weight' with
linesn
quitn
" | "gnuplot > /dev/null";
データを格納し、Gnuplot でグラフを描く。
2011年11月19日 OSC2011 Tokyo Fall 19
30. 3回裏(伝説なのか?)
• 他の言語を使う。
– PYTHON.sh, C.sh, RUBY.sh, ...
#!/bin/bash
# エクセルシートのB列の値を足す。
ruby << FIN | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}'
require 'rubygems'
require 'spreadsheet'
book = Spreadsheet.open './hoge.xls'
sheet = book.worksheet 0
for i in 0..3
print sheet[i,1]
print "n"
end
FIN
2011年11月19日 OSC2011 Tokyo Fall 30