从输入文件中获取标题

时间:2014-04-29 20:20:44

标签: dynamic for-loop gnuplot title

想象一下,我有一堆这样的文件:

model: 12356

# BEGINNING OF DATA
1.0000000 1.301230484
1.1749304 2.809483900
...

我想绘制几个像这样的文件,并将我的情节标题设置为模型的编号(此处为“12356”)。

以下命令适用于一个文件

plot "< tail -n +4 myfile.data" u 1:2 title sprintf("%d",\
    `head -n 1 myfile.data | cut -d ":" -f 2`)

但现在假设我正在使用for循环执行几个绘图,命令将是:

plot for [file in list] "< tail -n +4".file u 1:2 title sprintf("%d",\
    `head -n 1 @file | cut -d ":" -f 2`)

当我这样做时,gnuplot告诉我文件不是字符串变量,因此不能与“@”一起使用。你有解决方法吗?

2 个答案:

答案 0 :(得分:2)

无需使用宏(@file)。只需使用system函数,您可以使用连接的字符串:

plot for [file in list] "< tail -n +4 ".file u 1:2 \
     title system("head -n 1 ".file." | cut -d ':' -f 2")

不知道使用宏命令的确切原因。

答案 1 :(得分:0)

如果您使用的是Linux,则可以使用输出为ls

的列表
List = "`echo $(ls *.dat | sort -V)`"
plot for [i in List] i u 1:2 title i

对于更复杂的ls命令,将显示文件的路径,这可能会很混乱。你可以用

删除它
plot for [i in List] i u 1:2 title system('basename '.i)

希望有所帮助