Как отсортировать файл формата вкладки по длине столбца K - PullRequest
4 голосов
/ 23 июня 2010

У меня есть табличный файл с пробелами, который выглядит следующим образом:

>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, чтобы отсортировать его по длине последовательности ДНК [ATCG]?

Ответы [ 4 ]

6 голосов
/ 23 июня 2010

Если длина указана в 4-м столбце, то sort -n -k4 должен помочь.

Если в ответе нужно определить длину, то перед сортировкой вы ищете шаг предварительной обработки. Возможно, python просто выводит длину 7-го столбца, разделенного пробелом, как последний или первый столбец.

3 голосов
/ 23 июня 2010

Эта конвейерная команда также определит длину. Мой Unix немного ржавый, некоторое время занимался другими делами

$ awk '{printf("%d %s\n", length($NF), $0)}' junk.lst|sort -n -k1,1|sed 's/^[0-9]* //'
1 голос
/ 23 июня 2010

С 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
1 голос
/ 23 июня 2010
 awk '{print length($NF) $0|"sort -n"}' file | sed 's/^.[^>]*>/>/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...