2014-11-06 36 views
1

我有看起来像这样一个文件:折叠线<N字符正则表达式与

>chr3:11131258-11134670(-)_3301 
tcctgaagaaatccaaaacaccatcagatccttctacaaaaggctatact 
>chr3:11131258-11134670(-)_3351 
caacaaaactggaaaacctggatgaaatggacaaatttctggacagatac 
>chr3:11131258-11134670(-)_3401 
caggtac 
>chr5:146697252-146699855(+)_1 
taaggaagcagataatccggcctgatccggggctcaagtcccttccggcc 

>凡表示标题行,否则行包含字符的长度为一个序列< = 50

我想查找具有字符序列<某些阈值(N)的行,并将它们折叠到上一个序列行中。这样做的例子应该产生以下文件:

>chr3:11131258-11134670(-)_3301 
tcctgaagaaatccaaaacaccatcagatccttctacaaaaggctatact 
>chr3:11131258-11134670(-)_3351 
caacaaaactggaaaacctggatgaaatggacaaatttctggacagataccaggtac 
>chr5:146697252-146699855(+)_1 
taaggaagcagataatccggcctgatccggggctcaagtcccttccggcc 

我试图用正则表达式做到这一点,但没有多少运气。我对各种技术都很开放,但如果可以在命令行上完成的话,则是一个加号。 (我有几个文件要处理每个包含> 100万行)。

回答

1

使用此正则表达式:^(>.*)\n(\w{0,49})$,使用多行选项,以便^$定位符匹配每行的开始和结束。

然后与匹配组表示本场比赛的标题行和第二行替换:$1 $2

这里有regex101

+0

哇演示!谢谢,我接近了,但我的太复杂了。我做了一些修改,以便删除主要的换行符和头文件:'[\ r \ n] + ^(>。* [\ r \ n] +)(\ w {0,40})$' – Josh 2014-11-06 20:05:29