【问题标题】:Gnuplot using shell command to set yrangeGnuplot 使用 shell 命令设置 yrange
【发布时间】:2017-11-22 09:19:45
【问题描述】:

我正在尝试通过从文件中读取值的变量在 gnuplot 中设置 yrange。 我使用的代码如下:

pres = "< cat log.xy | tail -n 100 | grep 'average(inlet) of p' | tail -1 |cut -d ' ' -f9 | awk '{print $1 - 5.0}'" 
pres_max = pres + 5.0
pres_min = pres - 5.0
set yrange [pres_min:pres_max]

有没有办法将 awk 的输出传递给 gnuplot 中的变量? 或者有没有其他方法来设置那个yrange?

【问题讨论】:

  • cattailcutgrep,最后是awk。这正是overkill 的同义词。请记住,您几乎可以仅使用 awk 完成所有操作,而使用 cattailcutgrep 组合可以完成的操作。
  • 使用gnuplot自带的stats命令
  • @tripleee 这不是一个重复的问题。在链接中,问题是关于如何在绘图函数中使用命令。那里提出的解决方案不适用于这个问题。相反,这里的问题是关于如何将命令的输出分配给变量,而不是在绘图函数中使用输出。
  • 明确一点,整个管道可以重构为awk '/average\(inlet\) of p/ { p = $9 - 5.0 } END { print p }' log.xy

标签: bash shell awk gnuplot


【解决方案1】:

有没有可能你使用了错误的引号?

gnuplot> n = `echo 2`
gnuplot> print n
2

适用于您的具体情况,并经过一些重构:

pres_max = `awk '/average\(inlet\) of p/{p=$9} END{print p}' log.xy`
pres_min = pres_max - 10
set yrange [pres_min:pres_max]

请参阅gnuplot manual 的“替换和命令行宏”部分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多