bashコマンドを使用して複数のファイルを繰り返します。

bashコマンドを使用して複数のファイルを繰り返します。

サンプル名がリストされたファイルがあります。

head sample_id.txt
PD26405a--PD26405b
PD26414a--PD26414d
PD26417a--PD26417b
...

また、実行中のプログラムの前処理ステップの出力を含むディレクトリもあります。

cd ./preprocessing_out
ls
PD26405a--PD26405b_allDirichletProcessInfo.txt
PD26405a--PD26405b_alleleFrequencies.txt
PD26405a--PD26405b_loci.txt
PD26405a--PD26405b_master.txt
PD26414a--PD26414d_allDirichletProcessInfo.txt
PD26414a--PD26414d_alleleFrequencies.txt
PD26414a--PD26414d_loci.txt
PD26414a--PD26414d_master.txt
PD26417a--PD26417b_allDirichletProcessInfo.txt
PD26417a--PD26417b_alleleFrequencies.txt
PD26417a--PD26417b_loci.txt
PD26417a--PD26417b_master.txt

Sample_id.txt ファイルのサンプル名は、preprocessing_out ディレクトリのファイル名と一致します。

*_master.txtファイルのみが必要な基本ステップスクリプトを実行したいと思います。デフォルトのファイルは次のとおりです。

cat PD26405a--PD26405b_master.txt
sample  subsample   datafile    cellularity sex cnadatafile indeldatafiles
PD26405a--PD26405b  PD26405a--PD26405b  PD26405a--PD26405b_allDirichletProcessInfo.txt  0.83    female  NA  NA

最初のサンプルに対してのみ実行したい場合

これだけ

Rscript --vanilla --slave /projects/dpclust_pipeline.R  -r 1 -d /projects/preprocessing_out -o /projectsdp_out -i /projects/preprocessing_out/PD26405a--PD26405b_master.txt


--r is ("run_sample"), type="integer", default=NULL, help="Sample to run".
--d is the directory that preprocessing results stored
--o is the directory that final output directory
--I is the path to master.txt 

合計150を超えるサンプルがあり、forループを持つbashスクリプトでこのRscriptを実行したいと思います。 r = 1は最初のサンプル(PD26405a-PD26405b)を参照し、r = 2は(PD26414a-PD26414d)を参照する方法です。

コードをどのように調整できますか?

ベストアンサー1

別のファイルのインポート中にrとして計算するには、次のようにします。

r=1
while read sample
do
  Rscript --vanilla --slave /projects/dpclust_pipeline.R  -r ${r} -d /projects/preprocessing_out -o /projectsdp_out -i /projects/preprocessing_out/${sample}_master.txt
  r=$(( r + 1 ))
done < path/to/sample_id.txt

おすすめ記事