2개의 파일 이 있습니다 Zipcode.txt
.Address.csv
ZipCode.txt
12345
23456
34567
45678
Address.csv
12345,3587 main st,apt j1,city,new jersey
23456,4215 1st st. s.,suite a2,city,new jersey
65432,115 main st,,city,new jersey
45678,654 2nd st n.,city,new jersey
의 우편번호 필드가 Zipcode.txt
의 우편번호 필드와 일치 하는 경우 네 번째 필드를 에서 로 Address.csv
변경하고 싶습니다 . 내가 원하는 것은 다음과 같습니다.city
found
12345,3587 main st,apt j1,found,new jersey
23456,4215 1st st. s.,suite a2,found,new jersey
65432,115 main st,,city,new jersey
45678,654 2nd st n.,found,new jersey
이것이 내가 시도한 것입니다:
awk -F',' 'BEGIN{OFS=FS}NR==FNR{a[$1]=1;next}a[$1]{$4="found"}1' Address.csv ZipCode.txt
답변1
Address.csv
의 첫 번째 필드에 있는 우편번호가 다음 위치에서 발견되는지 검색합니다 Zipcode.txt
.
awk -F, -v OFS="," 'NR==FNR {a[$1]++;next} $1 in a {$4="found"} 1' Zipcode.txt Address.csv
산출:
12345,3587 main st,apt j1,found,new jersey
23456,4215 1st st. s.,suite a2,found,new jersey
65432,115 main st,,city,new jersey
45678,654 2nd st n.,city,found
city
은 입력의 네 번째 필드가 아니기 때문에 마지막 줄은 예상한 것과 다릅니다 . 의 마지막 줄에 쉼표가 누락되었을 수 있습니다 Address.csv
.