I want something like this:
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
What is not working is the part with awk
inside a gnuplot function.
Using my awk
script directly after plot
works fine:
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
Is there a way to put awk
or other shell commands inside a gnuplot function?
I know I could outsource the awk script to another file and awk this file directly after plot
, but I don't want separate files.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…