• 0 views
•
link
Multiline fasta to single line
Hi all,
I'm trying to convert my multiline fasta in a single line fasta.
My input file is like this (I put only the first lines, but they are many more):
>sample1
gttaatgtagcttaaacccaaagcaaggcactgaaaatgcctagatgagtacaccaactc
cataaacacataggtttggtcccagccttcctgtttactttcaataggcctacacatgca
agcatccacgccccggtgagtaacaccctccaaatcaacaagactaagaggagtaggtat
caagcacacatcctgtagctcataacacctcgcccaaccacacccccacgggagacagca
gtgacaaaaattaagccataaacgaaagtttgactaagccatattgattagggttggtaa
atctcgtgccagccaccgcggtcatacgattaacccgagctaacaggaatacggcgtaaa
And the desired output would be this:
>sample1
gttaatgtagcttaaacccaaagcaaggcactgaaaatgcctagatgagtacaccaactccataaacacataggtttggtcccagccttcctgtttactttcaataggcctacacatgcaagcatccacgccccggtgagtaacaccctccaaatcaacaagactaagaggagtaggtatcaagcacacatcctgtagctcataacacctcgcccaaccacacccccacgggagacagcagtgacaaaaattaagccataaacgaaagtttgactaagccatattgattagggttggtaaatctcgtgccagccaccgcggtcatacgattaacccgagctaacaggaatacggcgtaaa
I tried this command, but it give me the same file as the input, that menas a multiline fasta
awk '{if(NR==1) {print $0} else {if($0 ~ /^>/) {print "\n"$0} else {printf $0}}}' input.fa > output.fa
I also tried several other commands, but they don't work..why?
• 3,200 views
•
link
1 answer
tr -d '\r' < input.fasta | awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}' | tr "\t" "\n"
the first tr is just in case your file comes from windows. see how to linearize a fasta file
• 0 views
•
link
Log in to answer this question.