89.3.10 パイプによる入力データ (piped-data)

popen 関数を持っているシステム上では、データファイルは、'<' で始まるフ ァイル名によって、シェルコマンドからパイプ入力することができます。例え ば


     pop(x) = 103*exp(-x/10)
     plot "< awk '{print $1-1965, $2}' population.dat", pop(x)

は、最初の人口の例と同じ情報を描画します。ただし、x 座標は 1965 年か らの経過年を表すようになります。この例を実行するときは、上のデータフ ァイルのコメント行をすべて削除しなければなりませんが、または上のコマ ンドの最初の部分を次のように変えることもできます (コンマに続く部分):


     plot "< awk '$0 !~ /^#/ {print $1-1965, $2}' population.dat"

このアプローチは最も柔軟性がありますが、using キーワードを用いた単純 なフィルタリングで行うことも可能です。

fdopen() 関数を持つシステムでは、データを、ファイルかパイプに結びつけ られた任意のファイルデスクリプタから読み込むことができます。n 番のフ ァイルデスクリプタから読み込むには、'<&n' としてください。これにより、 1 回の POSIX shell からの呼び出しの中で、複数のデータファイルからのパ イプ入力が容易に行えるようになります:


     $ gnuplot -p -e "plot '<&3', '<&4'" 3<data-3 4<data-4
     $ ./gnuplot 5< <(myprogram -with -options)
     gnuplot> plot '<&5'

竹野茂治@新潟工科大学
2021-06-08