我有以下文件,我想根据第6列以字母数字方式对其进行排序,以便E1之后是I1,然后是E2,依此类推特定ID之前的' :',当我对-V -k6文件进行排序时,它会把所有的ID放在最后而不是它们应该放在哪里。但是当我对它进行排序-k6时,它确实将ID的Es和Is放在一起但是有一些属于不同系列的ID穿插(我在这里突出显示),我怎样才能得到排序,这样就不会混合两个ID,而且列的顺序应该是:
chr1 259017 259121 104 - ENSG00000228463:E2
chr1 259122 267095 7973 - ENSG00000228463:I1
chr1 267096 267253 157 - ENSG00000228463:E1
chr1 317720 317781 61 + ENSG00000237094:E1
chr1 317782 320161 2379 + ENSG00000237094:I1
chr1 320162 320653 491 + ENSG00000237094:E2
chr1 320654 320880 226 + ENSG00000237094:I2
chr1 320881 320938 57 + ENSG00000237094:E3
chr1 320939 321031 92 + ENSG00000237094:I3
chr1 321032 321290 258 + ENSG00000237094:E4
chr1 321291 322037 746 + ENSG00000237094:I4
chr1 322038 322228 190 + ENSG00000237094:E5
chr1 322229 322671 442 + ENSG00000237094:I5
chr1 322672 323073 401 + ENSG00000237094:E6
chr1 323074 323860 786 + ENSG00000237094:I6
chr1 323861 324060 199 + ENSG00000237094:E7
chr1 324061 324287 226 + ENSG00000237094:I7
chr1 324288 324345 57 + ENSG00000237094:E8
chr1 324346 324438 92 + ENSG00000237094:I8
chr1 324439 326514 2075 + ENSG00000237094:E9
**chr1 326096 326569 473 + ENSG00000250575:E1**
chr1 326515 327551 1036 + ENSG00000237094:I9
**chr1 326570 327347 777 + ENSG00000250575:I1**
**chr1 327348 328112 764 + ENSG00000250575:E2**
chr1 327552 328453 901 + ENSG00000237094:E10
chr1 328454 329783 1329 + ENSG00000237094:I10
**chr1 329431 329620 189 - ENSG00000233653:E2**
**chr1 329621 329949 328 - ENSG00000233653:I1**
chr1 329784 329976 192 + ENSG00000237094:E11
答案 0 :(得分:1)
原始答案:
sed 's/:[EI]/&_ /' foo.txt | #separate the number at the end with a space
sort -k6 | sort -n -k7 | #sort by code, then by [EI] number
sed 's/_ //' #remove the underscore space
我喜欢做这样的事情,用一个占位符'保护'字符串来隔离我感兴趣的东西,然后在以后替换它们。
更紧密:
sed 's/:[EI]/_ &_ /' foo.txt | sort -n -k8 | sort -k6,6 | sed 's/_ //g'
但是这天真地假设排序以非常特殊的方式运作而不是......所以有时候E2会出现在E1之前......
我不确定是否可以单独排序,awk可能是要走的路......
答案 1 :(得分:1)
所以我回到这个问题并编写了一些实际完成任务的python代码:
> df_test_3[df_test_2, roll = -Inf]
time values
1: 15 -20
2: 20 -25
3: 26 -30
4: 28 -30
5: 31 NA
我希望你现在已经弄明白了。好奇,如果有人关心足以改善我的python。