【发布时间】:2018-06-01 09:20:02
【问题描述】:
我有非常大的数据要排序
- 第 1 列:先是数字,然后是字母
- 然后在第 2 列:数字。
所以,我的最终输出是这样的:
1 11
1 13
1 15
2 3
2 5
chr2 6
chr2 15
chr15 3
chr15 9
我在 unix 上使用sort。但是,无论我尝试什么类型,我都会将 chr2 放在顶部或底部。以下是我尝试过的一些类型:它无法给我想要的输出:
sort -V -k1,1n -k2n final_merged.txt > merged-sort.txt
sort -k1,1n -k2n final_merged.txt > merged-sort.txt
sort -k1,1h -k2n final_merged.txt > merged-sort.txt
sort -k1,1 -k2n final_merged.txt > merged-sort.txt
后期编辑:任何解决此问题的方法,而不会在使用时使内存过载
- 排序或其他 unix 实用程序
- 蟒蛇
谢谢,
【问题讨论】:
-
第 1 列中的前缀是否始终为
chr(或至少相同数量的字符)? -
可能会有所不同。这种排序整天给我带来麻烦。我阅读了几个排序教程,但无法解决这个问题。
-
@chepner : 任何方式都可以解决这个问题。
-
您想要数字排序,但 'chr2' 不是数字。您需要一个预处理步骤,将第一列拆分为 2 列,其中一个是“chr”(或空白:在只有数字的情况下),然后是数字。可能 sed 或 awk 可以做到这一点
标签: python shell sorting ubuntu unix