2017-06-01 10 views
0

を見つけるために私はタイプ_L001_R1_001.fastqかの終わるファイルを読むために私のスクリプトで正規表現の下に使用しています_L001_R2_001.fastq 正規表現ファイルの拡張子

それがreadPair_1に読まれるべきであるとR2あれば、それは読まれるべきR1であれば

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

関連する問題