Advertisements
I have some fasta sequences as shown below.
>contig_0,length=363,cov=3.6,min=5,max=7,gc=0.413,left=F_BRANCH_1.0,right=F_BRANCH_1.0 rightEdges=(95156-1-1-2-A)
CTTCATTTTTCCCTAGTCCCTTTCCTGGTATATATCCCATCTTGGTCATGATTTTTTGACTCGTGGGGCT
A
>contig_1,length=359,cov=4.8,min=2,max=8,gc=0.482,left=DEAD_END,right=DEAD_END
CATGGTCTCAATTTTCAACCAACCATGAGACAAAGAAGCTCACGGGAAGCCATCATTCACCCAGCACAAC
ACCTACGAGTAGGAAATCGGCAATGGGCTTCGATATGTGACACCCAGGCAGACGTGCCCTCAACCTAATG
>contig_2,length=363,cov=3.6,min=5,max=7,gc=0.413,left=F_BRANCH_1.0,right=F_BRANCH_1.0 rightEdges=(95156-1-1-2-A)
TACTTTGATACACTTCTGAGGCTGTGCCTATGCCGACAAGTCCTGTAACAGCCTTTTGTTTAGGCCAATT
TTTTGGCCACTGATTTAAAGCAATCCAATTTTTTGGCCACTGATTTAAAGCAATGATAGAGACATCTGCT
CCAGTGTCTACCA
I would like to edit the header of the fasta sequence in the following way. Your suggestions would be appreciated.
>contig_0
CTTCATTTTTCCCTAGTCCCTTTCCTGGTATATATCCCATCTTGGTCATGATTTTTTGACTCGTGGGGCT
A
>contig_1
CATGGTCTCAATTTTCAACCAACCATGAGACAAAGAAGCTCACGGGAAGCCATCATTCACCCAGCACAAC
ACCTACGAGTAGGAAATCGGCAATGGGCTTCGATATGTGACACCCAGGCAGACGTGCCCTCAACCTAATG
>contig_2
TACTTTGATACACTTCTGAGGCTGTGCCTATGCCGACAAGTCCTGTAACAGCCTTTTGTTTAGGCCAATT
TTTTGGCCACTGATTTAAAGCAATCCAATTTTTTGGCCACTGATTTAAAGCAATGATAGAGACATCTGCT
CCAGTGTCTACCA
>Solution :
Identify the lines starting with the >
pattern, and the split the header fields on the ,
separator and then re-populate the whole line with the fist field alone.
awk '/^>/{split($0,arr,","); $0 = arr[1]}1' file.fasta
Or simply substitute the contents from the first ,
to the end of the line
awk '/^>/{sub(/,.*/, "")}1' file.fasta