Tengo 2 archivos Zipcode.txt
y 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
Si el campo de código postal Zipcode.txt
coincide con el campo de código postal de Address.csv
, quiero cambiar el cuarto campo de city
a found
. Esto es lo que quiero:
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
Esto es lo que he probado:
awk -F',' 'BEGIN{OFS=FS}NR==FNR{a[$1]=1;next}a[$1]{$4="found"}1' Address.csv ZipCode.txt
Respuesta1
Esto buscará si el código postal en el primer campo de Address.csv
se encuentra en algún lugar de Zipcode.txt
:
awk -F, -v OFS="," 'NR==FNR {a[$1]++;next} $1 in a {$4="found"} 1' Zipcode.txt Address.csv
Producción:
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
Tenga en cuenta que la última línea no es la esperada, porque city
no es el cuarto campo de la entrada: es probable que falte una coma en la última línea de Address.csv
.