我有一个空格分隔的表格文件,如下所示:
>NODE 28 length 23 cov 11.043478 ACATCCCGTTACGGTGAGCCGAAAGACCTTATGTATTTTGTGG
>NODE 32 length 21 cov 13.857142 ACAGATGTCATGAAGAGGGCATAGGCGTTATCCTTGACTGG
>NODE 33 length 28 cov 14.035714 TAGGCGTTATCCTTGACTGGGTTCCTGCCCACTTCCCGAAGGACGCAC
如何使用Unix sort
按DNA序列[ATCG]的长度对其进行排序?
答案 0 :(得分:6)
如果长度在第4列,sort -n -k4
应该可以解决问题。
如果答案需要计算出长度,那么您需要在排序之前寻找预处理步骤。也许python只打印出第7个空格分隔列的长度作为最后一列或第一列。
答案 1 :(得分:3)
这个流水线命令也会计算出长度。我的Unix有点生疏已经做了一段时间的其他事情
$ awk '{printf("%d %s\n", length($NF), $0)}' junk.lst|sort -n -k1,1|sed 's/^[0-9]* //'
答案 2 :(得分:1)
awk '{print length($NF) $0|"sort -n"}' file | sed 's/^.[^>]*>/>/'
答案 3 :(得分:1)
使用Perl:
perl -e'
print sort {
length +($a =~ /(\S+)$/)[0]
<=>
length +($b =~ /(\S+)$/)[0]
} <>' infile
使用GNU awk:
WHINY_USERS= gawk 'END {
for (L in l) print l[L]
}
{
l[sprintf("%15s", length($NF))] = $0
}' infile