次の入力ファイルがあります。
3 1 10 1 6
9 4 2 4 1
9 2 2 2 1
2 4 2 2 2
9 4 9 2 9 1 2
観察すべき条件:
- NF==5 で $2 と $4 が等しい場合は、$3 位置に 11 を挿入し、$2 または $4 (ここでは 1) に格納された値を $4 位置に挿入します。残りのフィールドは右に2つ移動します。
- NF==5 で $1 と $3 が等しい場合は、$1 または $3 (ここでは 2) に格納された値を $3 位置に挿入し、5 を $4 位置に挿入します。残りのフィールドは両方の位置を正しい位置に移動します。
- 残りの行は変更されません。
出力は次のようになります。
3 1 11 1 10 1 6
9 4 11 4 2 4 1
9 2 11 2 2 2 1
2 4 2 5 2 2 2
9 4 9 2 9 1 2
よろしくお願いします!
ベストアンサー1
$ awk 'NF==5{ if ($2==$4) $2 = $2 OFS 11 OFS $4; else if ($1==$3) $2 = $2 OFS $1 OFS 5 } 1' file
3 1 11 1 10 1 6
9 4 11 4 2 4 1
9 2 11 2 2 2 1
2 4 2 5 2 2 2
9 4 9 2 9 1 2