Извлечение столбцов из файла Fasta в Linux

Короткийawkподход:

awk '{ $3=$3"_"a[$3]++ }1' file

Приблизительный вывод:

val1 val2 text_0_0
val1 val2 text_0_1
val1 val2 text_0_2
...  
val1 val2 text_1_0
val1 val2 text_1_1
val1 val2 text_1_2
...  
val1 val2 text_2_0
val1 val2 text_2_1
val1 val2 text_2_2

  • a[$3]++-подсчет появления 3-го значения поля с помощью приращения поста -(<var>++)
0
19.09.2019, 15:38
2 ответа

Попробуйте сделать так:

cat... | sed -n '/^>/ { s/.*description: *//; s/\[.*//; p; }'

(Не проверено, так как я на мобильном телефоне.)

Есть более изящные способы; например, цикл Awk был бы наиболее гибким.

0
28.01.2020, 02:39

Использованиеawk:

awk -F ':' '/^>/ { sub(".*",    "", $10)
                   sub(" \\[.*", "", $11)
                   print $10, $11 }' file.fa

Данные, которые вы хотите извлечь, — это первое слово в 10-м поле и все до [в 11-м поле каждой строки заголовка, если поля разделены :-.

Код удаляет все, начиная с первого пробела в 10-м поле и все после [в 11-м поле (, включая [и предыдущий пробел ).

Затем распечатываются модифицированные 10-е и 11-е поля.

Вывод с учетом данных в вопросе:

TRBD1 T cell receptor beta diversity 1
TRDD2 T cell receptor delta diversity 2
1
28.01.2020, 02:39

Теги

Похожие вопросы