管道的 gnuplot 输出

管道的 gnuplot 输出

灵感来自这个问题我尝试将输出通过管道传输到 gnuplot,然后绘制它。

我的管道是:

cat file.txt |
grep CU | 
perl -e 'while(<>){print +(split)[3], "\n"}' | 
gnuplot file.gp 

其中 file.gp 包含以下内容:

set terminal dumb
plot '<perl' using 1

管道的输出为:

-77.8333771886
-77.8333771886
-77.8333771886
-77.8333771886
-77.8333771886
-77.8333771886
-77.8333771886
-77.8333771886
-77.8333771886
-7.78333787544e+01
-7.78333787544e+01

现在我得到了这个错误:

plot '<perl' using 1
               ^
"file.gp", line 3: warning: Skipping data file with no valid points

plot '<perl' using 1
                ^
"file.gp", line 3: x range is invalid

将输出通过管道传输到文件中,然后执行gnuplot file.gp修改file.gp以包含文件名,工作正常。

我在这里做错了什么?

答案1

当我正要发布这个问题时,我的互联网连接断开了,所以我不得不自己尝试更多的事情,并最终弄清楚如何去做。但既然我已经写了这个问题,我觉得我不妨分享我新发现的知识。我还鼓励提供更多见解的其他答案。

我的解决方案是file.gp改为

set terminal dumb
plot '<cat' using 1

然后像这样调整管链

cat file.txt |
grep CU | #I put an identifier in the file 
perl -ne 'print +(split)[3], "\n"' | #strip the identifier
cat | #this makes gnuplot accept the output from the pipe
gnuplot file.gp 

相关内容