2017-06-01 108 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

相关问题