Ну, один из способов - использовать символы |
в качестве разделителей полей, например
awk -v repl="kraken:taxid" 'BEGIN{FS="|";OFS=FS} /^>/ {$1=">"$4;$3=$2$5;$2=repl;NF-=2}1'
Тестирование с вашими данными в виде файла
:
$ awk -v repl="kraken:taxid" 'BEGIN{FS="|";OFS=FS} /^>/ {$1=">"$4;$3=$2$5;$2=repl;NF-=2}1' file
>NZ_AKJD01000108.1|kraken:taxid|398852808 Pseudomonas sp. GM80 PMI37_contig126.126, whole genome shotgun sequence
CCGCAGGCTGCGATCTTTTGATGTTGTTTTTTTAAGATCAAGATCAAAAGATCGCAGCCTTCGGCAGCTCCTACAGGTGG
TCGTGGGTTTAAGCCGCTCAATCCAGTAAACTGCGGCACGTTTTTCTCTAAGTAGTGTTTTCCCCATGCAAATTGCTCTG
GCGCCCATGGAGGGGTTGGTCGACGACATCCTCCGCGACGTGCTGACCCGCGTTGGCGGCATCGATTGGTGCGTGACTGA
ATTCATTCGGGTCAACGATCAGTTGCTCACCCCGGCTTACTTCCACAAGTTCGGCCCCGAGCTGCTCAACGGTGCCCGCA
CGGCGTCCGGCGTGCCATTGCGTGTGCAATTGCTCGGTTCCGACCCGGTGTGCCTGGCGGAAAACGCTGCACTGGCCTGC
Вы можете обнаружить, что perl работает быстрее, особенно для больших файлов; перевод (вероятно, чрезмерно буквальный) будет
perl -F'\|' -ane 'print /^>/ ? join "|", ">".$F[3], "kraken:taxid", $F[1].$F[4] : $_' file
, но, вероятно, есть более идиоматический способ сделать это.