抱歉,如果这是一个重复的问题,但我无法在此处或文档中找到我正在寻找的答案。
我有一个如下所示的文件:
chr2_oligo1234 700 750
chr2_oligo1236 750 800
chr1_oligo1 50 100
chr1_oligo256 150 200
chr1_oligo6 3500 3550
chr4_oligo95 50 100
chr5_oligo1 50 100
chr4_oligo4 150 200
Run Code Online (Sandbox Code Playgroud)
所需的输出如下所示:
chr1_oligo1 50 100
chr1_oligo256 150 200
chr1_oligo6 3500 3550
chr2_oligo1234 700 750
chr2_oligo1236 750 800
chr4_oligo95 50 100
chr4_oligo4 150 200
chr5_oligo1 50 100
Run Code Online (Sandbox Code Playgroud)
开头的模式(例如 chr#_oligo#)仅与 chr# 相关,这意味着所有 chr1 应该是第一个,然后是 chr2,然后是 chr3 等,但我想按组对这些子字符串进行数字排序如上面所需的输出所示。所以,我想知道如何在第一列的情况下按字母顺序排序,然后保持该顺序(chr1->chrN),按数字对每个数据块进行排序。
如果我的措辞不适合这个问题或者重复,我深表歉意。试
sort -k1,1 -nk2
Run Code Online (Sandbox Code Playgroud)
确实按数字正确排序,但没有保持第一个排序完整(将第一列打乱,并将所有行与第 2 列和第 3 列放在一起,如下所示:
50 100
Run Code Online (Sandbox Code Playgroud)
我使用的是 Mac OS X。
编辑:我想更改第一列中的一些示例以显示更多我正在寻找的内容。如果第一列中的名称按数字顺序排列,则 gsort -V 效果很好,但在我的数据集中,情况并非总是如此。
我想基本上按第 …