gnuplot のパイプ渡しプロットについて

p “< command”
とするとcommandがpopenを使ってsh -cに渡されるようで(gnuplot/src/datafile.c),その出力をデータファイルとして使うことができます.

複数ファイルを加工したいときは,zshやbashの逆リダイレクトみたいな機能”<(command)"を使えると便利ですが,shだと解釈してくれません.

ので,p “< bash -c \"paste <(command) <(command)\""などとして使うとよいです.

クオートについては,シングルクオートはエスケープしなくてよいのが便利ですが,シングルクオート中でシングルクオートが使えないのが欠点です.一度クオートを閉じてから,シングルクオートマークを書き出す方法が良くない場合には,ダブルクオートを使うことになります.ダブルクオートは中身を解釈してくれるので,エスケープすればダブルクオート中でダブルクオートを使えます.

上述commandがawkだと,命令をクオートで閉じることになりますから,クオートのネストが3重になります.$1などの$もawkに渡る前に解釈されないように,外側のダブルクオートの数だけ\を直前においてエスケープする必要があります.

なお,/bin/shのリンクを貼りなおせばこのようなことをする必要はありませんが,その際には,shがshであると期待して作成してあるスクリプトファイルが正常に動作しなくなるおそれがあります.例えば,apt-get installなどしたときにpostprocess scriptでエラーがでたりします.

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す