各行に対してcsvファイルの2つの変数を保存して使用する方法

各行に対してcsvファイルの2つの変数を保存して使用する方法

A.csvCSVファイル(区切り文字:)があります,

sample,run
2071410189,RUN120
2071436273,RUN119
2071507844,RUN120
2071627356,RUN120
2071627370,RUN118

各「サンプル」が所有するファイルをリンクしたいと思います。これを行うには、2つの情報列を使用してパスを設定する必要があります。各行の例A.csv

home/RUN120_*/analyse/2071410189_*_*/*consensus.fasta
home/RUN119_*/analyse/2071436273_*_*/*consensus.fasta
home/RUN120_*/analyse/2071507844_*_*/*consensus.fasta
home/RUN120_*/analyse/2071627356_*_*/*consensus.fasta
home/RUN118_*/analyse/2071627370_*_*/*consensus.fasta

A.csv複数のファイルでループを実行する方法を知っていますが、同じファイルの各行でループ()を実行する方法がわかりません。何をすべきか知っていますか?

ベストアンサー1

試してみたいかもしれません

awk -F, '{print "home/" $2 "_*/analyse/" $1 "_*_*/*consensus.fasta"}' file

これはファイルにいくつかの文字列定数を追加するだけです。awk入力ファイルの各行を繰り返します。

編集する: @nstatamのコメントで、入力ファイルでファイルパスのセットを設定し、そのファイルをすべて新しいファイルにリンクしようとしていることを読んでいます。これを試して、各パスを引数awkリストに追加してから、すべてのパスをstdoutに印刷できます(必須ファイルにリダイレクトするか、リダイレクトする必要があります)。

awk -F, '
FNR==NR {ARGV[ARGC++] = "home/" $2 "_*/analyse/" $1 "_*_*/*consensus.fasta"
         next}
1
' file

mawk1.3.4 20200120(Ubuntu)およびバージョン20110810(FreeBSD)でテストされましたawk。この「パラメータリストに追加」は、すべてのawkバージョンでは機能しません。

おすすめ記事