在Gnuplot脚本中合并两个CSV文件

在Gnuplot脚本中合并两个CSV文件,gnuplot,Gnuplot,这是一个问题的延续,例子也是一样的 在这个问题中,回答了如何获取一个CSV文件,其中每个数据由“”、“分隔,并从第8行中删除这些字符,然后按第36列值对结果进行排序 我已经尝试过这个解决方案,比如 `tail -n+8 Hight_6x6.csv | tr '",' ' ' | sort -nk36` 而且效果很好 现在,我想用两个相似的CSV文件的合并结果来做同样的事情。也就是说,从第8行获取两个文件,将其中一个附加到另一个,然后按第36列排序 下一行 `cat 2x2/Hight_2x2.

这是一个问题的延续,例子也是一样的

在这个问题中,回答了如何获取一个CSV文件,其中每个数据由“
”、“
分隔,并从第8行中删除这些字符,然后按第36列值对结果进行排序

我已经尝试过这个解决方案,比如

`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`

`cat 2x2/Hight_2x2.csv为了避免转义单引号或双引号,您可以使用第三种形式的引号,即here文档来创建数据块。然后,可以将数据块通过管道传输到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

$datablock问题是Gnuplot使用不支持进程替换的
/bin/sh
运行命令,即
@Thor谢谢。这个问题没有解决办法,合并Gnuplot中的两个文件?请将命令括在
bash-c'…'
中,但这很难看,您将遇到严重的引用问题非常感谢。它工作得很好。我发现使用datablock可以包含shell命令。我不完全理解这三个打印文件,主要是为什么最后一个
set print
需要它。最初,任何
print
命令都只在终端上产生输出。要改为打印到文件
myfile
,请先使用
设置打印“myfile”
。要返回到终端打印,请使用
设置打印
。要运行命令并打印到生成的管道,请使用
set print“| command”
。要关闭管道并返回打印到终端,请像以前一样使用
设置打印