如何以有序的方式粘贴多个文件中的列?

时间:2016-06-16 10:30:44

标签: bash file multiple-columns .bash-profile

我有一个不同文件名的输出:file_1.dat..file_15.dat

我正在使用此命令:

paste result_*.dat | column -s $'\t' -t >> cache/Final_Evolution.dat

但我的输出文件是以这种方式排序的,我不知道为什么:

file_1.dat
file_11.dat
file_13.dat
file_15.dat
file_3.dat
file_5.dat
file_7.dat
file_9.dat

所以,当我使用上面提到的命令时,数据列的顺序是1,11,13 ...当我想要1,3,5,7 ......

非常感谢你。

3 个答案:

答案 0 :(得分:4)

首先规范化文件名。

_

它在所有带有一位数字的文件中替换_0 ? select column1 , column2 from my_table union all select concat(column1, ' - Sub Total') as column1, sum(column2) from my_table group by column1 order by column1 匹配单个字符)。

答案 1 :(得分:1)

如果您正在寻找sort的方法,可以将其作为

sort -t _ -k 2 -g cache/Final_Evolution.dat

其中-t用于解除对_-k 2的限制,用于解除限制后的第二列(数字列)和-g进行数字排序。< / p>

file_1.dat
file_3.dat
file_5.dat
file_7.dat
file_9.dat
file_11.dat
file_13.dat
file_15.dat

答案 2 :(得分:1)

您可以按照评论中的指示对文件进行规范化,或者像这样使用glob:

paste file_?.dat file_??.dat

?将扩展为一个字符,因此file_?.dat只能扩展为:file_1.dat .. file_9.datfile_??.dat只能扩展为{{ 1}} .. file_10.dat

如果你没有匹配glob的文件,那么这将失败,因为它将被识别。