마지막 열의 값 변경 [닫기]

마지막 열의 값 변경 [닫기]

이와 같은 입력이 있고 마지막 성적 열을 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

답변2

간단한 검색 및 대체 sed. 열이 몇 개의 공백으로 구분되어 있다고 가정합니다.

sed 's/ 9$/ AB/; s/ 12$/ RE/; s/ 23$/ A1/; s/ 34$/ FA/' 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

관련 정보