灵感来自这个问题我尝试将输出通过管道传输到 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