Присоединение к Разрывам строки в файле FASTA С Условием в SED/AWK/Perl остроте

У меня есть данные, которые похожи на это

> sq1
foofoofoobar
foofoofoo
> sq2
quxquxquxbar
quxquxquxbar
quxx
> sq3
paxpaxpax
pax

То, что я хочу сделать, должно присоединиться к ним в строки:

> sq1 foofoofoobarfoofoofoo
> sq2 quxquxquxbarquxquxquxbarquxx
> sq3 paxpaxpaxpax

Я попробовал этот код, но сбой.

sed -e 'te' -e 'H;$!d;:e' -e 'x;/^$/d;s/\n//g'

Что правильный путь состоит в том, чтобы сделать это?

6
задан neversaint 2 March 2010 в 01:14
поделиться

3 ответа

$ awk '/^>/&&NR>1{print "";}{ printf "%s",/^>/ ? $0" ":$0 }' file 
> sq1 foofoofoobarfoofoofoo
> sq2 quxquxquxbarquxquxquxbarquxx
> sq3 paxpaxpaxpax
4
ответ дан 17 December 2019 в 00:08
поделиться

Это один из способов сделать то, что вы хотите, используя sed :

sed -n '1{x;d;x};${H;x;s/\n/ /1;s/\n//g;p;b};/^>/{x;s/\n/ /1;s/\n//g;p;b};H'
2
ответ дан 17 December 2019 в 00:08
поделиться
perl -ne '!/^>/ ? chomp($p) : (chomp $_, $_.=" "); print $p; $p = $_; END{print $p}

... который, конечно, при желании можно было бы написать намного короче.

1
ответ дан 17 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: