フィールドを変更し行を挿入する


正直言って、やりたいことが良く分からないのですが、以下のような内容です。
まず、fileA があります。

1 a b c
2 e f g
3 i j k
4 m n o

で、fileB があります。

1 q r s t
1 u v w x
2 y z a b
2 c d e f
3 g h i j
3 k l m n
4 o p q r
4 s t u v

これから以下の新たな fileB である fileC を生成するというものです。

1 b c s t
1 q r s t
1 u v w x
2 f g a b
2 y z a b
2 c d e f
3 j k i j
3 g h i j
3 k l m n
4 n o q r
4 o p q r
4 s t u v

ここで、fileB の第 2, 3 フィールドは fileA の第 3, 4 フィールドで置き換えるというものだそうです。
質問者は自分で作ったものを載せていますが、動作はしていないようです。

FNR == NR {f[$1]=$0}

FNR != NR {oldp=p; p=$1}

FNR != NR && FNR > 1 && $1 != oldp {
    if ($1 in f) {
        split(f[$3], a, ",")
        newtwo=a[3]
        newthree=a[4]

}

FNR != NR

いくつか間違いとかミスがありますね。

しかし、Ed の回答は Golf ですか? 分かりにくいです。

awk 'NR==FNR {f2[$1]=$3; f3[$1]=$4; next}
$1 in f2 {s=$0; $2=f2[$1]; $3=f3[$1]; print; delete f2[$1]; $0=s}
1' fileA fileB > fileC