awk ersetzt Feldwert basierend auf übereinstimmendem Wert in einer anderen Datei

awk ersetzt Feldwert basierend auf übereinstimmendem Wert in einer anderen Datei

Ich habe 2 Dateien Zipcode.txtund 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

Wenn das Postleitzahlenfeld in Zipcode.txtmit dem Postleitzahlenfeld in übereinstimmt , möchte ich das vierte Feld von in Address.csvändern . Folgendes möchte ich:cityfound

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

Folgendes habe ich versucht:

awk -F',' 'BEGIN{OFS=FS}NR==FNR{a[$1]=1;next}a[$1]{$4="found"}1' Address.csv ZipCode.txt

Antwort1

Dadurch wird gesucht, ob die Postleitzahl im ersten Feld Address.csvirgendwo in gefunden wird Zipcode.txt:

awk -F, -v OFS="," 'NR==FNR {a[$1]++;next} $1 in a {$4="found"} 1' Zipcode.txt Address.csv

Ausgabe:

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

Beachten Sie, dass die letzte Zeile nicht wie erwartet ist, da cityes sich nicht um das vierte Feld in der Eingabe handelt: In der letzten Zeile von fehlt wahrscheinlich ein Komma Address.csv.

verwandte Informationen