파일 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"