2013-03-26 70 views
0

我有文件名列表如下:拿到模式出來的文件和grep與模式相關的所有文件進行不同的目錄

T0rain.Zfp691_0895.2_v2_deBruijn.txt 
Train.Hbp1_2241.2_v2_deBruijn.txt 
Train.Zfp740_0925.2_v2_deBruijn.txt 
Train.Hbp1_2241.3_v1_deBruijn.txt 
Train.Zfp740_0925.3_v1_deBruijn.txt 
Train.Hic1_2816.2_v1_deBruijn.txt 
Train.Zic1_0991.2_v1_deBruijn.txt 

我想提取列車之間的所有名稱。和_這樣的:

Zfp691 
Hbp1 
Zfp740 
Hbp1 
zfp740 
Hic1 
Zic1 

比我有文件的另一個列表:

Zfp691.pwm.txt 
Hbp1.pwm.txt 
Zfp740.pwm.txt 
Hbp1.pwm.txt 
zfp740.pwm.txt 
Hic1.pwm.txt 
Zic1.pwm.txt 
Zic1.pwm.RC.txt 

我想提取匹配這樣的例子的所有情況:

Train.Zic1_0991.2_v1_deBruijn.txt匹配Zic1.pwm.txt和Zic1.pwm.RC.txt

這些輸出參數傳遞給我的R腳本。所以SH腳本應該給後面的參數=

$i (Train.Zic1_0991.2_v1_deBruijn.txt) + $j Zic1.pwm.txt 
$i (Train.Zic1_0991.2_v1_deBruijn.txt) + $j Zic1.pwm.RC.txt 

我不知道這甚至有可能。我開始嘗試這個:

#!/bin/bash 

for i in input/*/testtrain/Train*deBruijn.txt 
do 
    $i 
done 

for j in input/All_PWMs/*/*.txt 
do 
    $j 
done 

echo qsub script3.sh $i $j 

在這裏,我嘗試給腳本3.sh的參數,但這隻給1組合返回。任何人提示或提示?比如如何匹配/ grep這些名字。或者通過參數傳遞的不同方式。

Script3.sh用於在Linux命令行中調用R。所以參數只是通過這個文件來調用一個包含debruijn和pwm組合的R作業。

r腳本需要1個debruijn.txt和1個pwm.txt才能計算出我需要的值。 因此,對於這個例子,我將獲得2個組合:

debruijn.txt and pwm1.txt -----> pass the args to R as combination 1 
debruijn.txt and pwm2.txt -----> pass the args to R as combination 2 

回答

1

的Perl:

#!/usr/bin/perl 

@files=glob("*.*_*"); 

foreach $f (@files) { 
    $f =~ /^[^\.]+\.([^_]+)_/; 
    $pre = $1; 
    @f2 = glob ("$1*"); 
    print "$f found files ".join(" ",@f2)."\n"; 
    system ("./script.sh",$f,@f2) && die ($!); 
} 

給出輸出:

T0rain.Zfp691_0895.2_v2_deBruijn.txt found files Zfp691.pwm.txt 
Train.Hbp1_2241.2_v2_deBruijn.txt found files Hbp1.pwm.txt 
Train.Hbp1_2241.3_v1_deBruijn.txt found files Hbp1.pwm.txt 
Train.Hic1_2816.2_v1_deBruijn.txt found files Hic1.pwm.txt 
Train.Zfp740_0925.2_v2_deBruijn.txt found files Zfp740.pwm.txt 
Train.Zfp740_0925.3_v1_deBruijn.txt found files Zfp740.pwm.txt 
Train.Zic1_0991.2_v1_deBruijn.txt found files Zic1.pwm.RC.txt Zic1.pwm.txt 

我 「script.sh」 是:

#!/bin/sh 

echo Script got $0 $1 $2 $3 

確保你的手機d 755所有腳本等

+0

我試圖將這個應用到我的數據,但我將如何能夠傳遞2個參數。 $ f和'@ f2'不能傳遞給我的其他腳本。或者是第二個參數不同於@f2 – 2013-03-26 14:33:08

+0

system(「script」,$ f,@ f2); – Brad 2013-03-26 14:35:26

+0

所以如果我正確的「腳本」將是我的其他腳本名稱>>?並且可以在那裏使用組合? – 2013-03-26 14:38:07

相關問題