У меня есть данные, которые похожи на это
> 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'
Что правильный путь состоит в том, чтобы сделать это?
$ awk '/^>/&&NR>1{print "";}{ printf "%s",/^>/ ? $0" ":$0 }' file
> sq1 foofoofoobarfoofoofoo
> sq2 quxquxquxbarquxquxquxbarquxx
> sq3 paxpaxpaxpax
Это один из способов сделать то, что вы хотите, используя 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'
perl -ne '!/^>/ ? chomp($p) : (chomp $_, $_.=" "); print $p; $p = $_; END{print $p}
... который, конечно, при желании можно было бы написать намного короче.