-1

У меня есть сырые последовательности, и я должен преобразовать его в формат Fast. так что читает так:

CTACGGTGTGCTCTTCCGATCTGACTATG
AGTTGGTGTGCTCTCCCGATCTCGCTCCCTC
GTGAGGTGTGCTCTTCCGATCTCCGGCAGTGTGCT

и я хочу добавить> и цифры над каждой строкой, так что, наконец, это должно выглядеть так:

>1
CTACGGTGTGCTCTTCCGATCTGACTATG
>2
AGTTGGTGTGCTCTCCCGATCTCGCTCCCTC
>3
GTGAGGTGTGCTCTTCCGATCTCCGGCAGTGTGCT

как я могу сделать в VIM? если не vim, то могу ли я использовать команду sed?

2 ответа2

4

В vim я бы добавил первую строку (>1), затем создал простой макрос, который восстанавливает пронумерованную строку, спускается на одну строку, вставляет янки и увеличивает число. В командах нормального режима vim: y y j p Ctrl-a. Если вы сохранили макрос в регистре q , выполните его с помощью @ q.

Предполагая, что первая запись находится в первой строке, вы можете сделать это с помощью двух вызовов GNU sed, например:

sed '=' file | sed 's/^[0-9]/>&/'

Или с nl который только нумерует строки, содержащие данные:

nl file | sed 's/^ *\([0-9]\+\)\t*/>\1\n/'

Это можно сделать с помощью awk более интуитивно:

awk 'NF { print ">" ++i "\n" $0 }' file

Вывод во всех случаях:

>1
CTACGGTGTGCTCTTCCGATCTGACTATG
>2
AGTTGGTGTGCTCTCCCGATCTCGCTCCCTC
>3
GTGAGGTGTGCTCTTCCGATCTCCGGCAGTGTGCT
2

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

:%s/^/\=printf('>%-d ', line('.'))

Чтобы вставить новую строку, замените контрольную строку на "\r". Что-то очень простое, например, это должно сделать работу в этом случае

:'<,'>s/ /\r

На http://vim.wikia.com/wiki/Vim_Tips_Wiki есть много других советов по vim.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .