【问题标题】:Pass GNUplot variable to system(/usr/bin/awk)将 GNUplot 变量传递给系统(/usr/bin/awk)
【发布时间】:2015-09-04 18:11:42
【问题描述】:

此命令在 GNUplot 脚本中运行良好,可在文件中查找值为 -1.98 的行

system("/usr/bin/awk '/-1.98/{print $2 $1}' /path/to/myfile.txt")  

鉴于 plot 命令产生的 GNUplot 变量 STATS_min_y,我如何将 STATS_min_y 传递到 system() 调用中以代替 -1.98 值?

system("/usr/bin/awk '/STATS_min_y/{print $2 $1}' /path/to/myfile.txt")  

和类似的变体因缺少括号而失败。

【问题讨论】:

  • 你可能想要system("/usr/bin/awk -v value=-1.98 '$0 ~ value {print $2 $1}' /path/to/myfile.txt")
  • 使用任何字符串连接支持 GNUplot 必须构造该命令字符串。
  • GNUplot 的 concat 运算符是句点,这在 system("/usr/bin/awk -v value= ". lowValue . " '$0 ~ value {print $2 $1}' /path/to/myfile.txt") 的意义上有效,因为它识别变量的值 (lowValue) 但失败并出现以下错误:unknown option -1.98 ignored,并返回每个文件的行。
  • value=后面不能有空格。
  • 不确定我的猜测是否正确:Gnuplot: how to plot max and /or min value

标签: awk gnuplot


【解决方案1】:

您可以将结果从sprintf 直接传递给system。例如:

a = system( sprintf("awk '/%g/{print $2,$1}' myfile.txt", STATS_min_y) )

【讨论】:

    猜你喜欢
    • 2014-09-09
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多