2014-11-06 50 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