perl -pe 'chomp unless /^>/; print "\n" if /^>/ and $. > 1' < File1
Você pode precisar adicionar a nova linha final.
Eu tenho um arquivo como o File1. Com um título por exemplo "> Contig1" e quero concatenar todas as seqüências sob o respectivo cabeçalho.
Arquivo1:
>Contig1
ACCCCATACATCCAAA
NNNNNNNNNNCATACA
AAAAAAAACTANNNNN
ACATACAAAAA
>Contig12
CCCCACAATTTTTAAA
GGGGGNNNNNCATACA
AGGAATTAACTANNAC
GGATATA
Resultado esperado:
>Contig1
ACCCCATACATCCAAANNNNNNNNNNCATACAAAAAAAAACTANNNNNACATACAAAAA
>Contig12
CCCCACAATTTTTAAAGGGGGNNNNNCATACAAGGAATTAACTANNACGGATATA
Você pode me ajudar com isso? Felicidades!
Outro awk:
awk '{$1=RS $1 ORS}NR>1' FS='\n' RS=\> OFS= file
Uma solução awk
:
awk '/^>/{if(FNR>1)printf "\n";print;next};{printf "%s", $0}' file
Uma solução perl
, como @ resposta da choroba , mas lidando com a nova linha final:
perl -pe 'chomp unless /^>/ or eof;print "\n" if /^>/ and $. > 1' file