web-dev-qa-db-ja.com

パイプの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.gpfile.gpファイル名を含むように変更すると期待どおりに機能します。

私はここで何が間違っているのですか?

3
fifaltra

この質問を投稿しようとしたときにインターネット接続がダウンしたので、自分でさらにいくつかのことを試して、最終的にそれを行う方法を見つけなければなりませんでした。しかし、私はすでに質問を書いていたので、新しく見つけた知識を共有したほうがいいと思います。また、より多くの洞察を提供する他の回答をお勧めします。

私の解決策は、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 
2
fifaltra