سؤال
هل هناك طريقة لاستخدام أنابيب متعددة عند قراءة البيانات باستخدام Gnuplot؟ سوف يلي سوف يرسم البيانات المستلمة مباشرة من بيان SQL.
plot "< sqlite3 tomato-rstats.db \"SELECT data FROM table;\""
ما أحب هو معالجة هذه البيانات قبل أن تصل إلى Gnuplot. أعلم أنه يمكنني تنشيط بيانات SQL من خلال البرنامج النصي ، والإخراج إلى ملف وسيط ، ورسم هذا الملف ، لكنني أفضل تخطي ملف temp. تخيلت شيئًا على غرار ما يلي ، لكن من الواضح أنه ليس بناء الجملة الصحيح.
plot "< sqlite3 tomato-rstats.db \"SELECT data FROM table;\" | process.pl"
أو
plot "< process.pl < sqlite3 tomato-rstats.db \"SELECT data FROM table;\""
هل هذا ممكن من خلال بعض بناء الجملة الأخرى؟
المحلول
استخدام
plot "< sqlite3 tomato-rstats.db \"SELECT data FROM table;\" | process.pl"
كما اقترحت يعمل على ما يرام في gnuplot. يمكنك استخدام أي مزيج من الأوامر التي تم إنشاؤها كمدخل لـ Gnuplot ، على سبيل المثال ،
plot "< cat file.txt | cut -f 5 | head -n 100" w l
يرسم أول 100 عنصر في الصف الخامس من file.txt
. تجدر الإشارة إلى أن استخدام هذا كمدخل للتخطيط أمر عديم الفائدة حيث يمكن إجراء هذه المعالجة من داخل Gnuplot نفسها ، ولكنه يوضح إمكانيات استخدام سطر أوامر UNIX الخاص بك وأنابيبه لإدخال المعالجة المسبقة.
وغني عن القول ، هذا لا يعمل على أنظمة غير يونيكس ، مثل Windows.