只要您使用 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 提供了几种运行任意内部/外部命令的方法,正如您从我的 backtics 和宏评估组合中看到的那样。
#!/bin/bash
顺便说一句,如果它可能会被 gnuplot 解释,那么在脚本开头有 bash shebang ( ) 对我来说有点奇怪。我假设您将其称为gnuplot myscript.plt
. 在这种情况下,shebang 只是一个注释(就 gnuplot 而言)并且没有做任何事情,因为 gnuplot 是解释器。在我的示例中,我使用#!/usr/bin/env gnuplot
并将脚本作为 bash 中的可执行文件运行,例如./myscript.plt
. 在这种情况下,shebang 告诉 bash 使 gnuplot 成为解释器(或在命令提示符下键入的任何gnuplot
命令)。当然,#!/usr/bin/gnuplot
如果您不担心路径改变,您也可以将 shebang 设置为。