2017-06-01 111 views
0

我使用正則表達式下面我腳本讀取類型_L001_R1_001.fastq或結尾的文件_L001_R2_001.fastq正則表達式查找文件擴展名

如果是R1應該讀入readPair_1如果R2應該讀到readPair_2,但它不匹配任何東西。

任何人都可以告訴我這裏有什麼問題嗎?

我的腳本:

#! /bin/bash -l 

Proj_Dir="${se_ProjDir}/*.fastq" 

for Dir in $Proj_Dir 
do 

     if [[ "$Dir" =~ _L.*_R1_001.fastq]] 
     then 

      readPair_1=$Dir 
      echo $readPair_1 

     fi 
     if [[ "$Dir" =~ _L.*_R2_001.fastq]] 
     then 

      readPair_2=$Dir 
      echo $readPair_2 

     fi 

文件:

Next-ID-1-MN-SM5144-170509-ABC_S1_L001_R1_001.fastq 
Next-ID-1-MN-SM5144-170509-ABC_S1_L001_R2_001.fastq 
Next-ID-1-MN-SM5144-170509-ABC_S2_L001_R1_001.fastq 
Next-ID-1-MN-SM5144-170509-ABC_S2_L001_R2_001.fastq 
Next-ID-1-MN-SM5144-170509-ABC_S3_L001_R1_001.fastq 
Next-ID-1-MN-SM5144-170509-ABC_S3_L001_R2_001.fastq 
+0

嘗試'_L [^ _] * _ R [0-9] + _ 001 \ .fastq \ .gz'。最後一個'$'也可能有用於僅在輸入結束時匹配。 –

+0

當你說它不起作用時,這是什麼意思?它只匹配你想要的一些字符串,還是不匹配任何東西?您的正則表達式由於未轉義的'.'s而不準確,但它看起來應該仍然匹配R1_001文件。 – CAustin

+0

感謝您的評論。否它不匹配任何東西。 – nadish

回答

0

嘗試:

L001_R[12]_001\.fastq\.gz$ 

這將查找無論是R1或R2文件,並確保該是如何的文件名字符串結束。

1

你需要.gz在你的模式結束。你沒有得到任何文件都:

Proj_Dir="${se_ProjDir}/*.fastq.gz" 

您還需要空間]]前:

if [[ "$Dir" =~ _L.*_R1_001.fastq ]] 

if [[ "$Dir" =~ _L.*_R1_002.fastq ]] 
0

的正則表達式=〜運營商必須在整場比賽串。因此,您應該在if語句中修改正則表達式,如下所示:.*_L.*_R1_001.fastq.*_L.*_R2_001.fastq

相關問題