我的文件有多个行,如下所示,每个种类的标题都以'>'开头
>gi|398852808|ref|NZ_AKJD01000108.1| Pseudomonas sp. GM80 PMI37_contig126.126, whole genome shotgun sequence
CCGCAGGCTGCGATCTTTTGATGTTGTTTTTTTAAGATCAAGATCAAAAGATCGCAGCCTTCGGCAGCTCCTACAGGTGG
TCGTGGGTTTAAGCCGCTCAATCCAGTAAACTGCGGCACGTTTTTCTCTAAGTAGTGTTTTCCCCATGCAAATTGCTCTG
GCGCCCATGGAGGGGTTGGTCGACGACATCCTCCGCGACGTGCTGACCCGCGTTGGCGGCATCGATTGGTGCGTGACTGA
ATTCATTCGGGTCAACGATCAGTTGCTCACCCCGGCTTACTTCCACAAGTTCGGCCCCGAGCTGCTCAACGGTGCCCGCA
CGGCGTCCGGCGTGCCATTGCGTGTGCAATTGCTCGGTTCCGACCCGGTGTGCCTGGCGGAAAACGCTGCACTGGCCTGC
我想找到标题并将其更改为
>NZ_AKJD01000108.1|kraken:taxid|398852808 Pseudomonas sp. A3(2016), complete genome
CGCGATGGTCGTTAACGAAAACGCATGCTTACTGGCTAAACGCGGCGCTCTTGACTCCAT
CGCGAGCAAGCTCGCTCCTACAGAAGAAAGCGGCGCTCTAGTGCGCCTCATCCCAGTTAT
TGCCTACCCCCACCTCGACCAGCAGCGGCACATCCAGTTGCGCGGCCCCGCTCATGTGCA
不改变文件的结构。
我试过这个 awk -v repl =“> kraken:taxid | $ ID |” '{gsub(/ ^> /,repl,$ 0);打印$ 0}'$ FILE
我可以移动单词,但无法移除或获得所需的结果。
谢谢
答案 0 :(得分:0)
据我所知,你想重新排列标题行上的字段:
1 >gi
2 398852808
3 ref
4 NZ_AKJD01000108.1
5 Pseudomonas sp. GM80 PMI37_contig126.126, whole genome shotgun sequence
是
1 >NZ_AKJD01000108.1
2 kraken:taxid
3 398852808 Pseudomonas sp. A3(2016), complete genome
你需要的awk大致是这样的:
BEGIN { FS = "[|]" }
/^>/ {
OFS = "|"
split($5, words, / /)
Pseudomonas = " " words[1] " " words[2] " " "A3(2016), complete genome"
print ">" $4, "kraken:taxid", $2 Pseudomonas
next
}
{ print }
我的猜测是,某些输出文字实际上是对输入进行分类或重命名的查找。如果是这样,您可能希望在处理基因组文件之前为它们(来自其他输入文件)构建关联数组。
HTH。