No Such Blog or Diary
AWK - はじめ
- 2005-02-16 (Wed)
- プログラミング ( sed/wake/awk )
awk のプログラム(スクリプト)は
pattern { action } pattern { action } ....
という構造にjなっている.pattern は /regex/ などのような正規表現や,BEGIN, END のような全ての最初と最後を意味するものがある.
入力はレコードセパレータ(RSという変数に入っている)によってレコードに分割され,全ての pattern に対してマッチが取られ,マッチしたときにはその pattern の action が実行される.デフォルトではフィールドセパレータは改行コードなので,一行が一レコードになってる.
例えば,外部から TARGET という変数に何か値を渡してあげて,"Start of TARGET" から "End of TARGET"までのレコードを出力するようなのは以下のとおり.
BEGIN { FLAG=0 STARTPat="Start of "TARGET ENDPat="End of "TARGET } //{ if($0 == ENDPat){ FLAG = 0 } if(FLAG) print if($0 == STARTPat){ FLAG = 1 } }
BEGIN で最初に変数を初期化しておいて,その後ろの //{...} で全てのレコードに対してマッチして処理をしている.これをファイル(split.awk)に保存して
awk -f split.awk -v TARGET=1st < in.dat
とかやると, in.dat の中の "Start of 1st" から "End of 1st"までの行が取り出せる.
ちなみにレコードはフィールドセパレータ(FSという変数)で分割されて,各フィールドは $i (i=1,2,...,NF) で取り出せる.$0 はレコード全体.出力は print で,引数を省略すると print $0 の意味になる.
詳しくはマニュアル参照.
- Comments: 0
- TrackBack (Close): -
GNUPlot Tips - eps オプション
- 2005-02-16 (Wed)
- ソフトウェア
EPS 出力の際のオプションで solid をつけると実線のみになる.dashed で通常通り点線がでる.dashlength で点線の長さ指定.lw 3 とかでデフォルトの線の太さを変えられる.などなど.
set terminal postscript eps color solid lw 3
- Comments: 0
- TrackBack (Close): -
GNUPlot Tips - key
- 2005-02-16 (Wed)
- ソフトウェア
グラフの線のタイトルは通常グラフの右上部に出力されるが,これを左側に移動することができる.
set key left
右上がりのグラフの描画時にはありがたい.
- Comments: 0
- TrackBack (Close): -
GNUPlot Tips - boxes
- 2005-02-16 (Wed)
- ソフトウェア
Box で棒グラフを描くときに,棒の幅を指定できる.こんな感じで.
set boxwidth 0.3 relative
通常に比べて幅が 0.3 倍になる.これで幅を縮めておいて棒グラフの中心をずれしておけば,複数の棒グラフをうまく並べてきれいに描くことができる.
- Comments: 0
- TrackBack (Close): -
GNUPlot Tips - データのフォーマット
- 2005-02-16 (Wed)
- ソフトウェア
x 軸を時間で指定するには,xdata, timefmt, format をいじる.
例えば,"HH:MM"という時間を使いたいときは,
set xdata time set timefmt "%H:%M" set format x "%H:%M" set xrange00:00":"23:10set xtics "00:00", 10800, "24:00"
みたいに書く.%H は時間(0-23),%Mは分(0-59)を表す.timefmt は入力のフォーマットを指定していて,ファイルに書かれているデータやレンジ指定のところのフォーマットになっている.なので,入力データは例えば
00:17 37 00:18 38 00:18 39 00:20 40 00:20 41 00:21 42 00:21 43
みたいになっている.で,format は出力(xtics)のフォーマットを指定している.注意としては, xtics のインクリメントの指定などは秒単位となる.
- Comments: 0
- TrackBack (Close): -
魔法使いの勝ち
- 2005-02-16 (Wed)
- 遊び
昨日の 第2回東方最萌トーナメント 「魔法使い vs. 巫女」は,
開始当初からの差をキープし続けた魔法使いの勝利となった.巫女は一応主人公なのに負けてしまうとは... 残念.今日も魔法使いの試合のようだが,果たして妹に勝てるだろうか?
- Comments: 0
- TrackBack (Close): -