6

file_in.txtこれらの名前を含むファイル ( ) があります:

aphid_splitseq.1.fasta.annot.xml
aphid_splitseq.2.fasta.annot.xml
aphid_splitseq.3.fasta.annot.xml
aphid_splitseq.4.fasta.annot.xml
aphid_splitseq.5.fasta.annot.xml

file_out.txtこれらの名前の別のファイル ( ) があります。

aphid_splitseq_1
aphid_splitseq_2
aphid_splitseq_3
aphid_splitseq_4
aphid_splitseq_5

今、私はこのような声明が欲しい

java -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe -in aphid_splitseq.1.fasta.annot.xml -out results/aphid_splitseq_1 -prop b2gPipe.properties -v -annot -dat 

file_in.txt基本的に、各andをループして、 and の値をandにそれぞれfile_out.txt置き換えます。-in-outij

Bashで試してみましたが、うまくいかないようです:

for i in `cat file_in.txt`
    for j in `cat file_out.txt`; do
        java -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe -in $i -out results/$j -prop b2gPipe.properties -v -annot -dat
    done
done
4

3 に答える 3

8

paste役立つことがあります:

#!/bin/bash

paste file_in.txt file_out.txt | while read if of; do
  echo "-in $if -out $of"
done

収量:

-in aphid_splitseq.1.fasta.annot.xml -out aphid_splitseq_1
-in aphid_splitseq.2.fasta.annot.xml -out aphid_splitseq_2
-in aphid_splitseq.3.fasta.annot.xml -out aphid_splitseq_3
-in aphid_splitseq.4.fasta.annot.xml -out aphid_splitseq_4
-in aphid_splitseq.5.fasta.annot.xml -out aphid_splitseq_5

これを変更して、目的の動作を得ることができます。

于 2013-09-20T06:13:46.690 に答える
0

両方のリストが同じ種類の名前と連続する番号の繰り返しである限り、ファイルを反復処理するべきではありません。代わりに、変数をカウントし、それを各ステップで実行するコマンドで使用します。例:

COUNT=1
while [ $COUNT -lt 5 ]; do
  mv inputfile$COUNT outputfile$COUNT
  let COUNT++
done
于 2013-09-20T06:13:34.073 に答える
-3

使用中

     While read line 
     do 
       line=$(echo -ne $line | sed or awk)
     done < Directory/filename.t
于 2013-09-20T08:04:11.357 に答える