AWK, Feldwert durch passende Felder in zwei Dateien ersetzen

AWK, Feldwert durch passende Felder in zwei Dateien ersetzen

Ich habe zwei Dateien, Address.csv und ZipCode.txt. Ich möchte eine Datei generieren, die Address.csv ähnelt, und das Stadtfeld von „Stadt“ auf „gefunden“ aktualisieren, wenn die Postleitzahl mit den ersten 5 Zeichen der Postleitzahl in der Datei Address.csv übereinstimmt.

Was ich habe:

  Address.csv
  Zip,Address1,Address2,conty,city,state
  65432-3421,115 main st,atlantic,city,new jersey
  45678-4098,654 2nd st n.,bergin,city,new jersey
  23456-3425,4215 1st st. s.,suite a2,camden,city,new jersey
  12345-6278,3587 main st,apt j1,essex,city,new jersey

  ZipCode.txt
  23456
  12345
  34567
  45678

Was ich möchte:

  NewAddress.csv
  Zip,Address1,Address2,conty,city,state
  65432-3421,115 main st,atlantic,city,new jersey
  45678-4098,654 2nd st n.,bergin,found,new jersey
  23456-3425,4215 1st st. s.,suite a2,camden,found,new jersey
  12345-6278,3587 main st,apt j1,essex,found,new jersey

Was ich mit Hilfe von Simlev versucht habeawk ersetzt Feldwert basierend auf übereinstimmendem Wert in einer anderen Datei:

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

Antwort1

Die wichtigste Sache, die in Ihrem Skript geändert werden muss, besteht darin, die ersten 5 Zeichen des ersten Felds mithilfe der Funktion abzurufen substr.

Die Daten Address.csvsind inkonsistent. Die ersten beiden Datenzeilen haben 5 Felder, die anderen 6 Felder. Deshalb verwende ich $(NF-1)(vorletztes Feld) statt $4(4. Feld). Sonst werden mit deinen Beispieldaten falsche Felder ausgetauscht.

awk -F, -v OFS="," 'NR==FNR {a[$1]++;next} substr($1,1,5) in a {$(NF-1)="found"} 1' ZipCode.txt Address.csv

Dieser Druck

Zip,Address1,Address2,conty,city,state
65432-3421,115 main st,atlantic,city,new jersey
45678-4098,654 2nd st n.,bergin,found,new jersey
23456-3425,4215 1st st. s.,suite a2,camden,found,new jersey
12345-6278,3587 main st,apt j1,essex,found,new jersey

verwandte Informationen