Ich habe zwei tabstoppgetrennten Dateien, f1
und f2
, die wie folgt aussehen:Awk: split Feldelement von einer Datei zur anderen verketten basierend auf gemeinsamen Feld
f1:
id1 r1
id2 r2
id3 r3
...
idN rN
f2:
wobei N
und M
unterschiedlich sein können. Ich suche ein assoziatives Array von f1
und verketten die zweite Spalte von f1
bis Ende f2
, so dass die Ausgabe zu erstellen:
f1 g1 x1;id1=r1
f2 g2 x2;id2=r2
...
Als Test, ich habe dies auszuführen:
awk 'BEGIN{FS=OFS="\t"} NR==FNR{id[$1]=$1; r[$1]=$2; next} {split($3,a,";"); if (a[2] in id) {print "found"} else {print "not found"}}' f1 f2
die Ausgabe gibt:
found
found
not found
...
den folgenden Befehl ausführen jedoch:
awk 'BEGIN{FS=OFS="\t"} NR==FNR{id[$1]=$1; r[$1]=$2; next} {split($3,a,";"); if (a[2] in id) {$3=$3"="r[$1]; print} else {print "not found"}}' f1 f2
gibt die Ausgabe:
f1 g1 x1;id1=
f2 g2 x2;id2=
not found
...
Meine Frage ist: Wie kann ich den Wert mit dem Schlüssel verbunden, so zugreifen, dass ich es in die dritte Spalte von f2
anhängen?
Bitte entfernen Sie alle '...' s, sie nur Ihre Beispiele überfluten und machen es so, dass wir sie nicht kopieren/einfügen können, um eine mögliche Lösung gegen zu testen. –