Awk のコマンドラインで変数を設定する
DOT 言語でグラフの方向を変える方法がわかった(前項)ので、Awk スクリプト T2D からこの方法を使えるようにしてみる。
Awk のコマンドラインで「-v」オプションを使って
-v var=value
のようにすると、変数 var に値 value を設定できる。
この機能を使うことにして、Awk スクリプト t2d の BEGIN ブロックに次の if 文を追加した。
それ以外は変更してない。
徳川系図を横向きにする場合のコマンドは次のようになる。
結果:
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 "}"
}
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
$ dot -Tgif tree.dot -o tree.gif
結果: