这个问题是How to run a shell command in Gnuplot and place the output in new file 的延续,例子是相同的。
在该问题中,将回答如何获取一个CSV文件,并用","
分隔每个数据,并从第8行中删除这些字符,然后,按第36列值对结果进行排序。 / p>
例如,我尝试过该解决方案,
`tail -n+8 Hight_6x6.csv | tr '",' ' ' | sort -nk36`
工作正常。
现在,我想做同样的事情,但是要合并两个相似的CSV文件的结果。也就是说,从第8行获取两个文件,将一个附加到另一个,然后按第36列进行排序。
以下行
`cat 2x2/Hight_2x2.csv <(tail +8 2x2b/Hight_2x2_b.csv) | tail -n+8 | tr '",' ' ' | sort -nk36`
做出我想在终端中执行的操作,但是在Gnuplot中给出了错误。 该错误表明存在意外的'('字符。 要合并的两个文件位于运行脚本的不同子目录(2x2和2x2b)中。 CSV文件位于此link中。
致谢
答案 0 :(得分:3)
为避免转义单引号或双引号,可以使用第三种形式的引号 here-document 创建数据块。然后,您可以将数据块传递到bash命令中:
$datablock << EOD
cat a.csv <(tail -n+2 b.csv) | tail -n+8 | tr '",' ' ' | sort -nk36 >pe_H_6x6.txt
EOD
set print "|bash -x"
print $datablock
set print
此处的-x
仅用于检查执行的命令。