Forループは複数のファイルから描画されます。

Forループは複数のファイルから描画されます。

私はUnixに最初に触れ、Rで使用していたスクリプトを変換したいと思います。これには、ファイル名のバリエーションが異なる3つのファイル(同じ長さ)があります。各ファイルから1行を取り、3つのファイルすべてを1行ずつ繰り返したいと思います。しかし、複数の変数をforループに組み込む方法がわかりません。

module load bbtools 

for i in fna and j in fna2 and k in fna.prefix; 
do 
rename.sh -Xmx20g in=",${i}," out=",${j}" prefix=",${k}"
done

Rスクリプトを呼び出さずに直接実行する方法はありますか?

ベストアンサー1

このコマンドを使用できますpaste。ファイルの場合:

a.txt

1
2
3

b.txt

a
b
c

c.txt

z
x
y

コマンド出力の例は次のとおりです。

$ paste -d, a.txt b.txt c.txt
1,x,a
2,y,b
3,z,c

その後、パイプすることができます(正しい区切り記号、つまりコマンドで使用された区切り文字を使用paste)。

paste -d, a.txt b.txt c.txt | while IFS=',' read -r f1 f2 f3; do
    # do your task with $f1 $f2 $3
done

おすすめ記事