我将数据保存在CSV文件中,该数据从第8行开始。 有很多列,但我想显示$ 46和$ 47。
我尝试过:
set encoding iso_8859_1
set key right bottom font "Helvetica,16"
set ylabel "Average inventory ratio, {/Symbol g} [inventoried/total]" font "Helvetica,19"
set xlabel "Average time in system, {/Helvetica=19 @^{/=18-}T} [s] " font "Helvetica,19"
set xtics font "Helvetica,16"
set ytics font "Helvetica,16"
set terminal postscript eps enhanced color
set grid
set key spacing 1
set key title "Min. Stock 80%"
set key box
set output "_known_T.eps"
set datafile separator ","
plot "ratio_T.csv" every::8::18 using 46:47 w linespoints ls 20
效果很好,但我需要按列$ 46对数据进行排序,以绘制结果。
我已经尝试了下AWK
行:
awk -F, 'NR>8{ print $46, $47 }' ratio_T.csv | sort -nk46 | tr '",' ' '
如果在Terminal
中执行,但不能与Gnuplot一起使用,则可以正常工作,从而实现:
plot '<awk -F, 'NR>8{ print $46, $47 }' ratio_T.csv | sort -nk46' u 1:2 w points ls 20
与此link中的CSV文件链接。
答案 0 :(得分:2)
您不能嵌套引号(例如您可以嵌套括号,例如((()())))。相反,您可以在双引号中混合使用单引号,例如:
plot "<awk -F, 'NR>8{print $46, $47}' ratio_T.csv|sed 's/\"//g'|sort -nk1" ...
或者,如果您愿意,也可以在单引号中使用2个单引号,它们会变成单引号,这不太明显,例如:
plot '<awk -F, ''NR>8{print $46, $47}'' ratio_T.csv|sed ''s/"//g''|sort -nk1' ...
请注意,在"..."
内使用反斜杠\
时要小心,因为反斜杠用于转义八进制字符代码,换行符和"
(例如"\033 \" \n"
)。