【问题标题】:Pipe from echo to gnuplot variable?从 echo 到 gnuplot 变量的管道?
【发布时间】:2017-03-03 07:04:58
【问题描述】:

我想要什么:

echo {0..2} | gnuplot --persist -e "f='{OUTPUT FROM ECHO}'" myplot.plg 
0 1 2

文件 myplot.plg:

print f
#plot for [fi in f] fi.".dat" using 1 w l title sprintf(fi)

使用:

echo "python sim.py > "{0..2}".dat &" | bash -
echo "node sim.js > "{0..2}".dat &" | bash -
echo {0..2} | gnuplot --persist -e {Stack Overflow Magic?} myplot.plg

我们的目标是同时运行这个 sim 的多个实例(不同的初始条件),使用 echo 创建命令,& 分叉进程,并 bash 运行它。模拟完成后,我想在一个图中显示所有图。例如:情节 {0..100}.dat nolegend

【问题讨论】:

  • 我认为没有真正的理智方法可以做到这一点。上次我尝试(多年前)时,我想我最终为每次运行创建了一个 here 文档,并将其作为脚本传递给 Gnuplot,IIRC。
  • 如果你有 Python,如果你只需要基本的绘图,Matplotlib 会更通用。
  • @tripleee:以前没有使用过 gnuplot,但是在其中一个标志中运行命令替换语法,f 在这里不起作用?
  • 它不是特定于 python 的,这只是一个示例用例。我设法让它与 xargs 一起工作,我对它的优雅感到满意。

标签: bash pipe gnuplot echo


【解决方案1】:

就在我以为所有希望都破灭的时候,xargs 来救援了!

echo {0..2} | xargs -I{} gnuplot --persist -e "f='{}'" myplot.plg

更多乐趣:

alias sgp="xargs -I{} gnuplot --persist -e \"f='{}'\""
echo {0..2} | sgp plot_files.plg 

Credit to this youtube video

编辑: 在 tcsh(别名 sgp 命令)中不起作用。 xargs 也不同。

【讨论】:

    猜你喜欢
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2022-07-29
    • 2021-08-31
    相关资源
    最近更新 更多