Ich will das so etwas wie:mit awk oder anderem Shell-Befehl in gnuplot Funktion
file1='logs/last/mydata1.log'
file2='logs/last/mydata2.log'
# declare function that uses awk to reshape the data - does not work :(
sum1(fname)=("<awk '{sum=0; for(i=8;i<=NF;i+=2) sum+=$i; print $1,sum/2}' $fname")
sum2(fname)=("<awk '{sum=0; for(i=9;i<=NF;i+=2) sum+=$i; print $1,sum/2}' $fname")
# plot different columns of my file and awk processed file
plot file1 u 1:2 title "thing A measure 1" w l, \
file1 u 3:4 title "thing A measure 2" w l, \
file2 u 1:2 title "thing B measure 1" w l, \
file2 u 3:4 title "thing B measure 2" w l, \
sum1(file1) u 1:2 title "group A measure 1" w l, \
sum2(file1) u 1:2 title "group A measure 2" w l, \
sum1(file2) u 1:2 title "group B measure 1" w l, \
sum2(file2) u 1:2 title "group B measure 2" w l
Was nicht funktioniert, ist der Teil mit awk
innerhalb einer gnuplot-Funktion. meinen awk
Skript direkt Verwendung nach plot
funktioniert:
plot "<awk '{sum=0; for(i=9;i<=NF;i+=2) sum+=$i; print $1,sum}' ./logs/last/mydata1.log" u 1:2 w l
Gibt es eine Möglichkeit awk
oder andere Shell-Befehle in einer gnuplot Funktion zu setzen? Ich weiß, ich könnte das awk-Skript in eine andere Datei auslagern und diese Datei direkt nach plot
awk, aber ich möchte keine separaten Dateien.
Perfekt! Ich habe jetzt auch eine weitere Hilfsfunktion hinzugefügt 'exec (cmd, arg1) = (System (sprintf (cmd, arg1)))' die entbindet mich von 'System (sprintf())' mehrmals eingeben ' – Juve
Ich sah gerade, dass meine 'exec' funktioniert nicht mit' plot'. Wie Sie sagten, erwartet "plot" eine Zeichenkette, wie sie von Ihrem zweiten Snippet erzeugt wird. Danke, dass du das herausgebracht hast. – Juve