弯曲两个CSV文件的排序合并

时间:2018-11-27 15:21:38

标签: csv unix awk merge gnuplot

我试图跳过前8行对两个CSV文件进行合并和排序。

我尝试按我使用的第36列对文件之一进行排序:

awk '(NR>8 ){print; }' Hight_5x5.csv | sort -nk36

并合并两个文件:

cat Hight_5x5.csv <(tail +8 Hight_5x5_b.csv)

sort命令不起作用。

我想两个在命令中同时使用两个动作,并将结果发送到gnuplot的plot命令。我已经尝试过这一行:

awk '(NR>8 ){print; }' (cat Hight_5x5.csv <(tail +8 Hight_5x5_b.csv)) | sort -nk36

它确实合并了两个文件,但是没有按列36进行排序,因此我认为在gnuplot plot中的命令也无法使用。

plot "<awk '(NR>8 ){print; }' (cat Hight_5x5.csv <(tail +8 Hight_5x5_b.csv)) | sort -nk36"

问题是两个文件的格式。数据具有","分隔。例如,...,"0.041","3.5","40","false","1000","1.3","20","5","5","-20","2","100000000","0.8",...

link具有两个CSV文件。

致谢

1 个答案:

答案 0 :(得分:1)

$ awk 'FNR>8' file1 file2 | sort -k36n 

应该这样做,我想您也应该可以通过管道传输到gnuplot

不了解您的评论,sort将进行排序。也许您没有36个字段,或者分隔符不是必须指定的空白。

这是一个带有逗号分隔字段的虚拟数据示例

$ awk 'FNR>3' <(seq 20 | paste - - -d,) <(seq 10 | shuf | paste - - -d,) | sort -t, -k2n
5,1
2,7
7,8
9,10
11,12
13,14
15,16
17,18
19,20