2010-11-19 3 views
1

Existe-t-il une méthode pour utiliser plusieurs canaux lors de la lecture de données avec Gnuplot? Ce qui suit trace les données reçues directement à partir de l'instruction SQL.Plusieurs canaux pour l'entrée Gnuplot

plot "< sqlite3 tomato-rstats.db \"SELECT data FROM table;\""

Ce que je voudrais est de traiter ces données avant d'atteindre Gnuplot. Je sais que je pourrais canaliser les données SQL à travers le script, la sortie vers un fichier intermédiaire, et tracer ce fichier, mais je préfère ignorer le fichier temporaire. J'ai imaginé quelque chose dans le sens de ce qui suit, mais ce n'est clairement pas la syntaxe correcte.

plot "< sqlite3 tomato-rstats.db \"SELECT data FROM table;\" | process.pl"

ou

plot "< process.pl < sqlite3 tomato-rstats.db \"SELECT data FROM table;\""

Est-ce possible grâce à une autre syntaxe?

+0

Est-ce que ce site répond à votre question: http://t16web.lanl.gov/Kawano/gnuplot/datafile3-e.html – Tom

Répondre

2

En utilisant

plot "< sqlite3 tomato-rstats.db \"SELECT data FROM table;\" | process.pl" 

comme vous le suggérez fonctionne très bien dans gnuplot. Vous pouvez utiliser toute combinaison de commandes passepoilées comme entrée pour gnuplot, par exemple,

plot "< cat file.txt | cut -f 5 | head -n 100" w l 

trace les 100 premiers éléments de la cinquième rangée de file.txt. Il est à noter que l'utiliser comme entrée pour le traçage est inutile car ce traitement peut être effectué depuis gnuplot lui-même, mais il montre les possibilités d'utiliser votre ligne de commande UNIX et ses tuyaux pour le prétraitement des entrées. Il va sans dire que cela ne fonctionne pas sur les systèmes non-UNIX, comme Windows, par exemple.

+0

Incroyable, je dois avoir été vissé la syntaxe quand j'ai essayé cela avant. Merci de l'avoir signalé et de m'avoir fait essayer à nouveau. – fracai