GNUplot 输入文件名作为变量

She*_*nan 4 variables bash gnuplot

我想将文件名作为变量输入到 GNUplot 中。我编写了一个 gnuplot 脚本,其中包括以下几行:

path="path/to/file"
plot "< cat $path | sed '1,4d'" using 1:2
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,gnuplot 窗口打开,但里面没有任何内容。如果我替换$path为实际路径,则图表将正确绘制。

请问您能建议一种方法吗?谢谢。

Tom*_*ech 7

您可以执行此操作以在命令中插入 gnuplot 变量的值:

path="path/to/file"
plot "< cat ". path ." | sed '1,4d'" using 1:2
Run Code Online (Sandbox Code Playgroud)

请注意,没有必要将catandsed一起使用:

path="path/to/file"
plot "<sed '1,4d' ". path using 1:2
Run Code Online (Sandbox Code Playgroud)

小心你的空间!您可以使用print而不是plot查看将执行什么命令。

有时,我喜欢用sprintf做这样的事情:

cmd = "1,4d"
plot sprintf("<sed '%s' %s", cmd, path) using 1:2
Run Code Online (Sandbox Code Playgroud)

虽然有点长,但我认为也更清楚了。

顺便说一下,在这种特殊情况下,您根本不需要使用任何外部工具。你可以这样做:

plot path using 1:2 every ::4
Run Code Online (Sandbox Code Playgroud)

这将跳过文件的前 4 行。