2017-05-31 3 views
-1

Diese Frage ist eine Erweiterung von Using awk how do I combine data in two files and substitute values from the second file to the first file?Verwenden von awk Wie kombiniere ich Daten in zwei Dateien und ersetze mehrere Werte aus der zweiten Datei in die erste Datei?

data.txt einige Daten enthält:

A;1 
B;2 
A;3 

keys.txt enthält "-Taste; Wert1; Wert; value3; value4" ("C" ist in diesem Beispiel nicht Teil data.txt, aber das awk-Skript noch funktionieren soll):

A;30;BC;100;1000 
B;20;CD;200;2000 
C;10;DE;300;3000 

gewünschte Ausgabe:

A;1;30;BC;100;1000 
B;2;20;CD;200;2000 
A;3;30;BC;100;1000 

Daher sollte jede Zeile in data.txt, die einen beliebigen Schlüssel aus keys.txt enthält, die entsprechenden Werte an die Zeile in data.txt angehängt bekommen.

+1

Was ist die Logik für die letzte Zeile? Es basiert auf der Position (die dritte Zeile in beiden Dateien). Es kann nicht mit Schlüsseln erfolgen, da in der ersten Datei kein "C" vorhanden ist. – karakfa

+0

@karakfa, Sie sind absolut richtig, mein Fehler .. die Frage korrigiert. – Markus

Antwort

1

Es ist ähnlich wie die vorherige Antwort in der Frage.

$ awk 'BEGIN {FS=OFS=";"} 
     NR==FNR {k=$1; $1=""; a[k]=$0; next} 
     $1 in a {print $0 a[$1]}' file2 file1 

A;1;30;BC;100;1000 
B;2;20;CD;200;2000 
A;3;30;BC;100;1000 
Verwandte Themen