に私はオンラインさまざまなスレッドを分類しようとしてきたとのトラブルどのように、後続のコマンドにパイプ出力を決定するが生じています。私は入力を特定の形式にする必要がある独立したプログラムを通して複数のファイルを連結するバッチスクリプト(bash経由)を使用しています。
プログラム内で連結するための標準的なコマンドは次のとおりです。私は以下の最新の試みで、入力ファイルを定義するには、いくつかの方法を試してみた
fslmerge -t $OUTPUT $INPUT1 $INPUT2... $INPUT n
。
file=$INPUTDIR/sublist.txt
while read -r SUBJ; do
for cond in "med" "nomed"; do
for n in {01..10}; do
INPUT="stage2_${SUBJ}_${cond}_00${n}.nii.gz"
fslmerge -t $OUTPUT/stage2_ic00${n}_${cond}.nii.gz `ls $INPUTDIR/$INPUT`
done; done; done < $file
しかし、これは(「標準コマンド」で上述したように)別々にすべての入力でコマンドを実行する対の各入力にコマンドを実行することになる:
fslmerge -t $OUTPUT $INPUTDIR/subject1
fslmerge -t $OUTPUT $INPUTDIR/subject2
...
fslmerge -t $OUTPUT $INPUTDIR/subject10
EDIT: sublist.txtは次のようにリストされています。それらは、fslmerge
を介して連結するために必要な順序で積み重ねられます。
SUB003
SUB006
SUB007
SUB010
SUB011
SUB001
SUB004
SUB008
SUB009
各状態(med、no med)について、各被験者は複数の成分(n)を有する。最終的には、コマンドを実行して、特定の条件とコンポーネントのすべてのサブジェクトを連結する必要があります。例:
fslmerge -t $OUTDIR/stage2_ic0001_med.nii.gz stage2_SUB003_med_0001.nii.gz stage2_SUB006_med_0001.nii.gz stage2_SUB007_med_0001.nii.gz ... stage2_SUB009_med_0001.nii.gz
私は問題の入力や簡略化の方法に非常に感謝しています。そして、私はコーディングでは比較的新しいので、あらゆる用語の誤りに対して誠実にお詫び申し上げます。私の試みは、おそらくこの世界の中から大げさではないことに気づきます。
あなたはそれが何をしたいのか明確にすることはできますか?特に、それぞれの組み合わせのために一度( '(かつて指揮して=「medが」、と一度COND =「nomed」と)sublist.txt内の各行について、または二回行ごとに一度fslmerge'、または20回実行する必要がありますcondとn)?それが最後のものであれば、入力ファイルは何ですか(SUBJ/cond/nの組み合わせごとに1つの入力しか表示されないようです)。最後のものでなければ、出力ファイルは何であると思われますか(あなたはcondとnをファイル名の一部として表示するようです)。 –
一般的な考え方は、すべての入力ファイル名を配列に追加した後、$ {array [@]} "'を使用してそれらのすべてをコマンドの最後に置くことです。しかし、私はあなたの出力ファイルが各入力ファイルごとに異なるので、あなたがこれをやりたいことを理解していません。 – Barmar
こんにちはゴードン、お世話になりました。あなたの質問は素晴らしいです、そして、私はこれが私がうんざりしているところだと思っています、そして、進め方について一般的に混乱しています。あなたが与えた最後の例です:各科目(SUBJ)には2つの条件(med、no med)があります。各条件に対して、各サブジェクトには複数のコンポーネントファイル(n)があります。 – edub