データファイルがありますA.txt
(フィールド区切り記号= \ t)。
Well Well Type Well Name Dye Target
A1 Unknown HIGH-001 FAM ViroFAM
A1 Unknown HIGH-001 HEX ViroHEX
そしてテンプレートファイルB.txt
:
kit
Software Version = NOVA_v1
Date And Time of Export = 07/02/2020 13:44:11 UTC
Experiment Name =
Instrument Software Version =
Instrument Type = CFX
Instrument Serial Number =
Run Start Date =
Run End Date =
Run Operator =
Batch Status = VALID
Method = Novaprime
Date And Time of Export,Batch ID,Sample Name,Well,Sample Type,Status,Interpretive Result,Action*,Curve analysis
,taq,205920777.1,A01,Unkn-01
,taq,neg5,A02,Unkn-09
,,,,,,,,,,
*reporting.
=
2行目の値で置換を印刷したいが、パターンが5列目にある場合にのみ可能です。B.txt
VIRO_v1
ViroHEX
A.txt
そのために、私は次のような作業を始めました。
awk -F'\t' '
FNR==NR{ a[NR]=$2; next }
$1=="Software Version"{ print $0,"VIRO_v1"; next }
1
' B.txt FS=" =" B.txt > result.txt
しかし、私はその部分を把握できませんでしたA.txt
。何をすべきか知っていますか?
ベストアンサー1
awk -F'\t' '
NR==FNR{ if ($5=="ViroHEX"){ viro=1 } next }
viro && $1=="Software Version"{ $2="VIRO_v1" }
1
' A.txt FS=" = " OFS=" = " B.txt > result.txt
最初のフィールドが最初のファイルの列5と同じで、どこにでも表示される場合、2番目のファイルの2番目のフィールド()がNOVA_v1
置き換えられます。VIRO_v1
Software Version
ViroHEX
2番目のファイルのフィールド区切り文字は<space>=<space>
(タブではない)と仮定します。