请告诉我如何在gnuplot脚本中做到以下两点:
1)解析字符串并从中提取数字和字母/字符串?
2)是否可以使用关联数组以避免使用多个IF语句?
在我的情况下,我需要从文件名中获取秒数,格式如下:
在更复杂的情况下:
1)解析字符串并从中提取数字和字母/字符串?
2)是否可以使用关联数组以避免使用多个IF语句?
files = system(sprintf("dir /b \"%s*.csv\"", inputPath))
do for [name in files]{
# MY TROUBLES IS HERE
[value, typeID] = parse(name, "*[%d%s]*"); # pseudocode
typesList = {"h": 3600, "m": 60, "s": 1};
scale = value * typesList[typeID];
# MY TROUBLES IS ABOVE
myfunc(y) = y * scale
outputName = substr(name, 0, strlen(name) - strlen(".csv"))
inputFullPath = inputPath.name
outputFullPath = outputPath.outputName.outputExt
plot inputFullPath using 1:(myfunc($2)) with lines ls 1 notitle
}
在我的情况下,我需要从文件名中获取秒数,格式如下:
...[d=17s]...
, ...[d=2m]...
, ...[d=15h]...
等等。在更复杂的情况下:
...[d = 2h7m31s]...
(这是一个普遍情况,对我可能没有用处,但了解如何解决它会很有趣)。
gnuplot
不适用于解析字符字符串,因此您需要改变方法。您可以将此信息放在文件开头(以秒为单位),读取它,然后跳过第一行读取数据。或者,因为根据dir
您正在使用 Windows,您可以从 GnuWin32 存储库(http://gnuwin32.sourceforge.net/packages.html)下载grep
或sed
实用程序,并阅读如何使用它们的文档。 - Michael