to top page
2012-12-28
Awk のコマンドラインで変数を設定する
DOT 言語でグラフの方向を変える方法がわかった(前項)ので、Awk スクリプト T2D からこの方法を使えるようにしてみる。

Awk のコマンドラインで「-v」オプションを使って
  -v var=value
のようにすると、変数 var に値 value を設定できる。
この機能を使うことにして、Awk スクリプト t2d の BEGIN ブロックに次の if 文を追加した。
それ以外は変更してない。

BEGIN {
    print "digraph Tree {"
    if (dir) printf "graph [rankdir = %s];\n", dir
}
/^-/ {
    len = length($1)
    if (len > gen) {
        if (gen > 0) printf "%s -> %s;\n", tree[gen], $2
        tree[++gen] = $2
    } else {
        if (len > 1) printf "%s -> %s;\n", tree[len-1], $2
        gen = len; tree[gen] = $2
    }
}
END {
    print "}"
}

徳川系図を横向きにする場合のコマンドは次のようになる。
$ awk -f t2d -v dir=LR tree.data > tree.dot
$ dot -Tgif tree.dot -o tree.gif

結果: