awk を使用している限り、gnuplot マクロ内からヘッダー名を取得するためにもう一度使用できます。
#!/usr/bin/env gnuplot
set datafile separator ","
set key autotitle columnhead
set xlabel "time/date"
nc = "`awk -F, 'NR == 1{ print NF; exit}' input.csv`"
# Define a macro which, when evaluated, assigns the ith column header
# to the variable 'head'
awkhead(i) = "head = \"\`awk -F, 'NR == 1 {print $".i."}' input.csv\`\""
set term png
do for [i = 2:5] {
eval awkhead(i) # evaluate the macro
set output head.".png" # use the 'head' variable assigned by the macro
plot 'HiveLongrun.csv' every::0 using i:xticlabels(1) with lines
}
別の awk のようなユーティリティを使用するか、gnuplot 内でさえも、これを行うためのよりクリーンな方法がほぼ確実にあります。gnuplot は、任意の内部/外部コマンドを実行するいくつかの方法を提供します。これは、バックティックとマクロ評価の組み合わせからわかるようにです。
ところで、#!/bin/bash
gnuplot によって解釈される可能性がある場合、スクリプトの先頭に bash shebang ( ) があるのは少し奇妙です。と呼ぶとしgnuplot myscript.plt
ます。この場合、シバンは単なるコメント (gnuplot に関する限り) であり、gnuplot がインタープリターであるため何もしません。私の例では#!/usr/bin/env gnuplot
、スクリプトを bash の実行可能ファイルとして実行し./myscript.plt
ます。この場合のシバンは、bash に gnuplot をインタープリター (またはgnuplot
、コマンド プロンプトで入力して得られる任意のコマンド) にするように指示します。もちろん#!/usr/bin/gnuplot
、パスの変更を心配していない場合は、シバンを に設定することもできます。