2つのファイルがあります。 file_1.txtは次のとおりです。
R1 C1 C2 C3 C4 C5
R2 C1 C2 C3 C4 C5
R3 C1 C2 C3 C4 C5
R4 C1 C2 C3 C4 C5
R5 C1 C2 C3 C4 C5
R6 C1 C2 C3 C4 C5
R7 C1 C2 C3 C4 C5
R8 C1 C2 C3 C4 C5
R9 C1 C2 C3 C4 C5
R10 C1 C2 C3 C4 C5
file_2.txtは次のとおりです。
R4 C4 C5
R6 C4 C5
R7 C4 C5
R9 C4 C5
file_1.txtのC4、C5の値をfile_2.txtの対応する値に置き換え、file_1.txtのC1、C2、C3の値はそのままにしたいと思います。
したがって、生成されたfile_3.txtは次のようになります。
R1 C1 C2 C3 C4 C5
R2 C1 C2 C3 C4 C5
R3 C1 C2 C3 C4 C5
R4 C1 C2 C3 C4_new C5_new
R5 C1 C2 C3 C4 C5
R6 C1 C2 C3 C4_new C5_new
R7 C1 C2 C3 C4_new C5_new
R8 C1 C2 C3 C4 C5
R9 C1 C2 C3 C4_new C5_new
R10 C1 C2 C3 C4 C5
すべての値は数値です。 file_1.txtとfile_2.txtの最初の列は、数値が昇順にソートされたキーフィールドです。
これは一人だけ参加すればできることですか?
ベストアンサー1
この問題の一般的なアプリケーションは次のとおりです。アッ
awk 'NR == FNR{a1[$1]=$2; a2[$1]=$3; next};
$1 in a1{$5=a1[$1]; $6=a2[$1]};{print}' file_2.txt file_1.txt
出力フィールド区切り文字をタブで明示的に設定する必要があるかもしれません。この場合
awk -v OFS='\t' 'NR == FNR{a1[$1]=$2; a2[$1]=$3; next};
$1 in a1{$5=a1[$1]; $6=a2[$1]};{print}' file_2.txt file_1.txt