A.csv
CSVファイル(区切り文字:)があります,
。
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
mawk
1.3.4 20200120(Ubuntu)およびバージョン20110810(FreeBSD)でテストされましたawk
。この「パラメータリストに追加」は、すべてのawk
バージョンでは機能しません。