0

私はこのようなファイル名のリストを持っています:

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

Train間のすべての名前を抽出したい。と_このように:

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.txtMATCHESZic1.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

ここで私はscript3.shに引数を与えようとしますが、これは1つの組み合わせしか返しません。誰かヒントやヒント?名前を一致/grepする方法のように。または、引数を渡す別の方法。

Script3.shは、LinuxコマンドラインでRを呼び出すためのものです。したがって、argsはこのファイルを通過するだけで、debruijnとpwmの1つの組み合わせで単一の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
4

1 に答える 1

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

すべてのスクリプトなどをchmod755するようにしてください。

于 2013-03-26T14:13:40.937 に答える