如何在Gnuplot中运行shell命令并将输出放在新文件中

如何在Gnuplot中运行shell命令并将输出放在新文件中,gnuplot,Gnuplot,我有以下Gnuplot: set encoding iso_8859_1 set key right bottom #font "Helvetica,17" set ylabel "Lookup error probability" font "Helvetica,17" set xlabel "Hight of the reader (m)" font "Helvetica,17" set xtics font "Helvetica,15" set ytics font "Helvetica

我有以下Gnuplot:

set encoding iso_8859_1
set key right bottom #font "Helvetica,17" 
set ylabel "Lookup error probability" font "Helvetica,17"
set xlabel "Hight of the reader (m)" font "Helvetica,17"
set xtics font "Helvetica,15"
set ytics font "Helvetica,15"
set size 0.75, 1.05
set terminal postscript eps enhanced color #"Helvetica" 16 #size 3.5in,3in
set grid 
set key spacing 1.5

set output "ProbError6x6.eps"
list(start,end,increment)=system(sprintf("seq %g %g %g", start, increment, end))

system("(awk '(NR>8 ){print; }' Hight_6x6.csv | sed -e 's/[",]/ /g' | sort -nk36) > pe_H_6x6.txt")

set print "pe_H_6x6.dat"
do for [i in list(2,3.5,0.25) ] {
  stats "pe_H_6x6.txt" u ($36==i?($37/$38):1/0) name "A" nooutput
  print i*1, A_mean,   (A_mean - 1.833*A_ssd/sqrt(A_records)),\
    (A_mean + 1.833*A_ssd/sqrt(A_records))
}
plot [][] "pe_H_6x6.dat" using 1:2:3:4 with yerrorlines ls 2 title "6x6 blocks"
带有
系统
awk
代码的行在我的Gnuplot脚本中不起作用。但是,它在unixshell中工作。此代码删除逗号,并根据第36列的值对结果进行排序。 我无法使它在Gnuplot脚本中工作。
CSV文件在这里。

您的问题可能是在命令中包含了双引号:

system("(awk '(NR>8 ){print; }' Hight_6x6.csv | sed -e 's/[",]/ /g' | sort -nk36) > pe_H_6x6.txt"
                                                           ^
一种解决方法是使用反报价,例如:

`(awk '(NR>8 ){print; }' Hight_6x6.csv | sed -e 's/[",]/ /g' | sort -nk36 > pe_H_6x6.txt`
或者像我写的那样:

`tail -n+8 Hight_6x6.csv | tr '",' ' ' | sort -nk36 > pe_H_6x6.txt`

非常感谢你。我会采取最后的解决办法。我不知道
tr
translation命令。您知道如何在
stat
Gnuplot命令中插入CSV处理命令的输出吗?。如果可能的话,我不想使用中间文件。@user1993416:您可以使用popen表示法,例如
stat“
。您可以在线或在
help plot special filename
中了解更多信息,谢谢。我修改了该行以合并第8行中的两个csv文件,但它不起作用。我将为此添加一个新问题