У меня есть файл bed в следующем формате:
chr start end q-value name
chr1 10004 10467 310.43 peak_1
chr2 15410 15704 19.61 peak_2
chr3 21207 21354 4.04 peak_3
chr4 26073 26165 25.32 peak_4
chr5 63044057 63044425 39.65 peak_5
Если возможно, мне нужна однострочная строка bash для сортировки этого файла по столбцу q-value (столбец 4), затем мне нужноизвлечь верхние 20% строк с самым высоким значением q.
После сортировки это будет выглядеть следующим образом:
chr start end q-value name
chr1 10004 10467 310.43 peak_1
chr5 63044057 63044425 39.65 peak_5
chr4 26073 26165 25.32 peak_4
chr2 15410 15704 19.61 peak_2
chr3 21207 21354 4.04 peak_3
После процентов это будет выглядеть следующим образом:
chr1 10004 10467 310.43 peak_1
Мне нужно запустить это для более 40 файлов.
Я также знаком с R, поэтому, если это невозможно в bash, но выполнимо в R, код R также будет полезен (но предпочтительнее Bash).
Большое спасибо.
Редактировать комментарии:
Сделан код более тестируемым.
Re: моя собственная попытка
Когда я попытался запустить sort -k4 file.txt
в первую очередь.Я получил следующее, что не то, что я ищу:
chr2 15410 15704 19.61 peak_2
chr4 26073 26165 25.32 peak_4
chr1 10004 10467 310.43 peak_1
chr5 63044057 63044425 39.65 peak_5
chr3 21207 21354 4.04 peak_3
Это смутило меня, я предполагаю, что десятичные дроби вызывают проблему, и я не уверен, как обойти эту первую часть.