Я новичок в написании сценариев оболочки и пытаюсь последовательно пронумеровать заголовки в файле fasta. Последовательности в моем файле fasta выглядят следующим образом:
>Rodentia sp.
MALWILLPLLALLILWGPDPAQAFVNQHLCGSHLVEALYILVCGERGFFYTPMSRREVED
PQVGQVELGAGPGAGSEQTLALEVARQARIVQQCTSGICSLYQENYCN
>Ovis aries
MALWTRLVPLLALLALWAPAPAHAFVNQHLCGSHLVEALYLVCGERGFFYTPKARREVEG
PQVGALELAGGPGAGGLEGPPQKRGIVEQCCAGVCSLYQLENYCN
Я хочу использовать awk в моем сценарии оболочки, чтобы заголовки были последовательно пронумерованы, путем вставки числа от 1 до n (где n - количество последовательностей) после «>», чтобы последовательности выглядели так:
> 1 Rodentia sp.
MALWILLPLLALLILWGPDPAQAFVNQHLCGSHLVEALYILVCGERGFFYTPMSRREVED
PQVGQVELGAGPGAGSEQTLALEVARQARIVQQCTSGICSLYQENYCN
> 2 Ovis aries
MALWTRLVPLLALLALWAPAPAHAFVNQHLCGSHLVEALYLVCGERGFFYTPKARREVEG
PQVGALELAGGPGAGGLEGPPQKRGIVEQCCAGVCSLYQLENYCN
Я попытался использовать подфункцию в awk, чтобы сделать это, заменив каждый экземпляр «>» на «> [число]».
awk '/>/{sub(">", "> ++i ")}1' file
Однако я не понимаю, как увеличивать переменные с помощью подфункции в awk. Я хотел бы знать, есть ли способ сделать это с помощью подфункции. Я понимаю, как работает подпрограмма, но не знаю, как правильно объявить переменную для увеличения.
Я объявил i равным 1 в начале моего сценария оболочки:
i=1
Однако вывод, который я получаю от подфункции:
> ++$i Rodentia sp.
> ++$i Ovis aries
Как можно правильно объявить переменную, чтобы я мог использовать подфункцию awk функция для нумерации заголовков?