배열의 데이터를 파일의 데이터와 일치시킵니까?

배열의 데이터를 파일의 데이터와 일치시킵니까?

다음과 같이 요일을 나열하는 배열의 데이터를 일치시키려고 합니다.

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.

관련 정보