想象一下,我有一堆这样的文件:
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告诉我文件不是字符串变量,因此不能与“@”一起使用。你有解决方法吗?
答案 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)
希望有所帮助