最後の列の値を変更する[閉じる]

最後の列の値を変更する[閉じる]

このような入力があり、最後の成績列を9はAB、12はRE、23はA1、34はFAに置き換えようとします。性的列をその値に変更する方法はありますか?

入力する:

ST NAME MATHS   PHY ENG SCI    DATE       Grade
XXXX    123     0   53  12   12 20 2021    9
YYYY    10      76  90  34   13 20 2021    12
ZZZZZ   234     76  65  0    14 20 2021    23
DDDD    90      78  45  19   15 20 2021    34

期待される出力

ST NAME MATHS   PHY ENG SCI    DATE       Grade
XXXX    123     0   53  12   12 20 2021    AB
YYYY    10      76  90  34   13 20 2021    RE
ZZZZZ   234     76  65  0    14 20 2021    A1
DDDD    90      78  45  19   15 20 2021    FA

ベストアンサー1

そしてawk。 4つのキーと値のペアをすべて配列(a)に入れます。現在の行の最後の列を変数(last)に保存し、現在の行の最後の番号を削除してから、次を使用してgsub配列の値を残りの行($0)に追加します。

awk 'BEGIN{ a[9]="AB"; a[12]="RE"; a[23]="A1"; a[34]="FA" };
     NR>1{ last=$NF; gsub(/[0-9]+$/,""); $0=$0 a[last] }
     { print }' file

出力:

ST名数学物理学工学科学日付グレード
XXXX 123 0 53 12 12 20 2021 AB
YYYY 10 76 90 34 13 20 2021 返信
ZZZZZ 234 76 65 0 14 20 2021 A1
DDDD 90 78 45 19 15 20 2021 FA

おすすめ記事