我有一个不同文件名的输出: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 ......
非常感谢你。
答案 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.dat
和file_??.dat
只能扩展为{{ 1}} .. file_10.dat
。
如果你没有匹配glob的文件,那么这将失败,因为它将被识别。