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