두 개의 서로 다른 csv 파일의 열을 비교하고 다른 파일의 열을 바꾸는 방법

두 개의 서로 다른 csv 파일의 열을 비교하고 다른 파일의 열을 바꾸는 방법

파일 1의 열 4(수준)를 파일 2의 열 1(수준)과 일치시켜야 합니다. 일치하는 항목이 있으면 File1(레벨)의 열 4를 File2(태그)의 열 2로 바꿉니다. 일치하는 항목이 없으면 열 4(수준)의 값을 변경하지 않고 그대로 둡니다.

파일 1

"RollNo","Name","Age","Grade","Class","Teacher"
"1","Asha","7","A","1","David"
"2","Mona","7","B","1","David"
"3","Sonali","7","C","1","David"
"4","Rani","7","D","1","David"
"5","Raj","7","B","1","David"

파일 2

"Grade","Marks"
"A","90"
"B","80"
"C","70"

예상 출력:

"RollNo","Name","Age","Grade","Class","Teacher"
"1","Asha","7","90","1","David"
"2","Mona","7","80","1","David"
"3","Sonali","7","70","1","David"
"4","Rani","7","D","1","David"
"5","Raj","7","80","1","David"

이 출력을 얻기 위해 awk 명령을 사용하는 데 도움을 줄 수 있습니까?
귀하의 회신을 기대하겠습니다.

답변1

CSV의 필드에는 ,s 또는 개행 문자( \n)가 포함될 수 없으며 Unix 셸을 실행 중이라고 가정합니다.

$ awk '
    BEGIN { FS=OFS="," }
    NR==FNR { map[$1] = $2; next }
    (FNR>1) && ($4 in map) { $4 = map[$4] }
1' file2 file1
"RollNo","Name","Age","Grade","Class","Teacher"
"1","Asha","7","90","1","David"
"2","Mona","7","80","1","David"
"3","Sonali","7","70","1","David"
"4","Rani","7","D","1","David"
"5","Raj","7","80","1","David"

관련 정보