如何合并不以特定字符开头的行

时间:2016-05-30 14:48:49

标签: bash perl awk sed tr

如果我有以下内容:

>A13P0
ACCATAGAGAG
CCCGAGATTTA
>03HK2
ACACAGTGTGT
TTAGAGGGAGA

如何合并不以>开头的行?

>A13P0
ACCATAGAGAGCCCGAGATTTA
>03HK2
ACACAGTGTGTTTAGAGGGAGA

谢谢!

4 个答案:

答案 0 :(得分:4)

perl -ne'
   if (/^>/) {
      print("\n") if $. != 1;
   } else {
      chomp;
   }
   print;
} {
   print("\n") if $. != 1;
'

有关用法,请参阅Specifying file to process to Perl one-liner

答案 1 :(得分:2)

我知道这已被问过/回答了一千次,但我找不到:

$ awk '/^>/{print (NR>1?ORS:"") $0; next} {printf "%s", $0} END{print ""}' file
>A13P0
ACCATAGAGAGCCCGAGATTTA
>03HK2
ACACAGTGTGTTTAGAGGGAGA

答案 2 :(得分:2)

使用perl命令行:

perl -pE '$.>1 && !s/^>/\n>/ && chomp; END{say}' file

答案 3 :(得分:0)

使用sed:

$ sed ':a;$!N;/>/!{s/\n\([^>]\)/\1/;ta};P;D' file
>A13P0
ACCATAGAGAGCCCGAGATTTA
>03HK2
ACACAGTGTGTTTAGAGGGAGA