This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Perl Script To Remove Unnecessary Headers

A FASTA file containing:

>ppa020722m pacid=19 locus=ppa020722m.g ID=ppa020722m.v1.0 annot-version=v1.0
CTCCAACAAGCCTTCACCAACATCCAAAATCATTGCTCTGGTTTCCTGCACCACCTCTCTCACTTTCCTGTCTTCAACCC
CAACCCCTCTTCCCTCAAAACCCAACTCGAGTCCACCTTCGCCAACCTCCAAAACCAAG
>ppa020723m pacid=10 locus=ppa020723m.g ID=ppa020723m.v1.0 annot-version=v1.0
CTCCAACAAGCCTTCACCAACATCCAAAATCATTGCTCTGGTTTCCTGCACCACCTCTCTCACTTTCCTGTCTTCAACCC
CAACCCCTCTTCCCTCAAAACCCAACTCGAGTCCACCTTCGCCAACCTCCAAAACCAAG
>ppa020724m pacid=15 locus=ppa020724m.g ID=ppa020724m.v1.0 annot-version=v1.0
CTCCAACAAGCCTTCACCAACATCCAAAATCATTGCTCTGGTTTCCTGCACCACCTCTCTCACTTTCCTGTCTTCAACCC
CAACCCCTCTTCCCTCAAAACCCAACTCGAGTCCACCTTCGCCAACCTCCAAAACCAAG
......

Can anybody provide a Perl script to clean the headers in this FASTA database to make an output file as:

>ppa020722m
CTCCAACAAGCCTTCACCAACATCCAAAATCATTGCTCTGGTTTCCTGCACCACCTCTCTCACTTTCCTGTCTTCAACCC
CAACCCCTCTTCCCTCAAAACCCAACTCGAGTCCACCTTCGCCAACCTCCAAAACCAAG
>ppa020723m
CTCCAACAAGCCTTCACCAACATCCAAAATCATTGCTCTGGTTTCCTGCACCACCTCTCTCACTTTCCTGTCTTCAACCC
CAACCCCTCTTCCCTCAAAACCCAACTCGAGTCCACCTTCGCCAACCTCCAAAACCAAG
>ppa020724m
CTCCAACAAGCCTTCACCAACATCCAAAATCATTGCTCTGGTTTCCTGCACCACCTCTCTCACTTTCCTGTCTTCAACCC
CAACCCCTCTTCCCTCAAAACCCAACTCGAGTCCACCTTCGCCAACCTCCAAAACCAAG
......

Many thanks.

perl fasta

Forget perl, just use cut.

3 answers

perl -ane 'print "$F[0]\n";' yourFile.fa > yourFile.clean.fa

as dpryan79 suggested, you can use cut -d " " -f 1 input.fasta

There you go:

Also awk alternative:

awk '/>/{$0=$1}1' test.fasta

Or if there are no line breaks in the sequences:

awk '{print $1}' file.fasta > output.fasta

Log in to answer this question.