This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Reduce the headers in a fasta file to just the gi number?

I simply want to reduce the headers in a fasta file from the long version below to simply the gi. i.e.

>gi|103058628|gb|DQ517338.1| Staphylococcus phage 80alpha, complete sequence
AGGTATCTGCATAGTTATTCCGAACTTCCAATTAATAAAACTCTATACCCGTAATCTTCAATGAGTTCTG
GCGCTTCCCTTTAATTCCTTTTACATATTCAAAATGAATGTTTTTGATTGCCATCTTTATGAATTCAGTT
TTTAACTCATCTTCCATTAATTCCCAGCCGTTTAGCAATGAATACTTGAAATTTTTAATCTTCTCATAGT

To:

>103058628
AGGTATCTGCATAGTTATTCCGAACTTCCAATTAATAAAACTCTATACCCGTAATCTTCAATGAGTTCTG
GCGCTTCCCTTTAATTCCTTTTACATATTCAAAATGAATGTTTTTGATTGCCATCTTTATGAATTCAGTT
TTTAACTCATCTTCCATTAATTCCCAGCCGTTTAGCAATGAATACTTGAAATTTTTAATCTTCTCATAGT

I'm guessing awk or grep has the technology!

fasta grep awk

Tip: awk and grep extract things, sed alters things. See Pierre's answer.

1 answer

just sed:

sed 's/^>gi|\([0-9]*\)|.*/>\1/' < in.fasta

How can I do it If I need both gi and gb numbers like >gi|103058628|gb|DQ517338.1|?

Log in to answer this question.