다음과 같이 요일을 나열하는 배열의 데이터를 일치시키려고 합니다.
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
파일 데이터는 다음과 같습니다.
Name1,Tuesday
Name2,Friday
Name3,Sunday
Name4,Wednesday
Name5,Thursday
Name6,Saturday
출력은 다음과 같아야 합니다.
MONDAY
TUESDAY Name1
WEDNESDAY Name4
THURSDAY Name5
FRIDAY Name2
SATURDAY Name6
SUNDAY Name3
쉼표를 사용하여 데이터를 두 부분으로 나눌 수 있습니다. 파일의 데이터를 배열의 데이터와 일치시키는 것이 가능한지 궁금합니다.
답변1
file1에 요일이 포함되어 있고 file2에 날짜와 이름이 포함되어 있으면 다음과 같습니다.
$ awk -F, 'FNR==NR{a[toupper($2)]=$1;next} {print $1,a[$1]}' file2 file1
MONDAY
TUESDAY Name1
WEDNESDAY Name4
THURSDAY Name5
FRIDAY Name2
SATURDAY Name6
어떻게 작동하나요?
-F,
필드 구분 기호로 쉼표를 사용합니다.
FNR==NR{a[toupper($2)]=$1;next}
첫 번째 명명된 파일인 file2를 읽으면
a
키가 날짜의 대문자 버전이고 값이 이름인 연관 배열에 항목이 추가됩니다. 그런 다음 나머지 명령을 건너뛰고 해당next
줄로 이동합니다.print $1,a[$1]
여기에 도착하면 두 번째 파일을 작업하는 중입니다. 이 경우 연관 배열에서 검색한 날짜와 이름을 인쇄합니다
a
.