フィールドを変更し行を挿入する
正直言って、やりたいことが良く分からないのですが、以下のような内容です。
まず、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