用于查找文件扩展名的正则表达式

时间:2017-06-01 20:59:57

标签: regex bash

我在我的脚本中使用以下正则表达式来读取以_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

3 个答案:

答案 0 :(得分:1)

您的模式结尾需要.gz。您根本没有收到任何文件:

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

]]之前还需要空格:

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

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

答案 1 :(得分:0)

尝试:

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

这将查找R1或R2文件,并确保文件名字符串的结束方式。

答案 2 :(得分:0)

=〜运算符的正则表达式必须与整个字符串匹配。因此,您应该在if语句中修改正则表达式,如下所示:.*_L.*_R1_001.fastq.*_L.*_R2_001.fastq