У меня есть 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
, я хочу изменить 4-е поле с 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
.