Ich arbeite an Sortieren, Join und awk 2 CSV-Dateien (Semikolon Trennzeichen), die von der ersten Spalte zugeordnet sind.Merge 2 Dateien und dann verketten Spalten
File1.csv:
TL_01;labelSD1;PFL_11
TL_01;labelSD1;PFL_12
TL_01;labelSD1;PFL_13
TL_02;labelSD3;PFL_04
TL_03;labelSD4;PFL_05
File2.csv:
TL_01;labelRT1;JV_111
TL_02;labelRT3;JV_02
TL_03;labelRT4;JV_03
ich diese beiden Dateien zusammenführen möchten und verketten die mehrere Werte der dritten Spalte in File1.csv
in einem Spalten mit '#' Trennzeichen nach diesem Modell:
RightMerge.csv:
TL_01;labelSD1;PFL_11#PFL_12#PFL_13;labelRT1;JV_111
TL_02;labelSD3;PFL_04;labelRT3;JV_02
TL_03;labelSD4;PFL_05;labelRT4;JV_03
Eigentlich kann ich die 2 Dateien zusammenführen, aber nicht Multiples Werte mit einem bestimmten Zeichen (#) mit dem folgenden Befehl (Dateien sind bereits sortiert nach der ersten Spalte) zu verketten :
join -11 -21 File1.csv File2.csv -t ';' > FileOut.csv
, die das folgende Ergebnis liefert:
FileOut.csv:
TL_01;labelSD1;PFL_11;labelRT1;JV_111
TL_01;labelSD1;PFL_12;labelRT1;JV_111
TL_01;labelSD1;PFL_13;labelRT1;JV_111
TL_02;labelSD3;PFL_04;labelRT3;JV_02
TL_03;labelSD4;PFL_05;labelRT4;JV_03
Danach versuche ich awk
Skript zu verwenden, um die ersten drei Zeilen wie diese verketten:
TL_01;labelSD1;PFL_11#PFL_12#PFL_13;labelRT1;JV_111
Aber ich eine Lösung für diese nicht finden. Sollte ich mit der awk Behandlung fortfahren oder gibt es einen anderen Weg dies zu tun?
Ja jeder Schlüsselwert in beiden Dateien vorhanden ist. – Blackcheap
Könnten Sie ein bisschen die folgende Zeile erklären: key2val [$ 1] = ($ 1 in key2val? Key2val [$ 1] "#" $ 3: $ 0); nächste Ich bin mir nicht sicher, jeden Vorgang zu verstehen. – Blackcheap
Es ist nur ein [ternärer Ausdruck] (https://en.wikipedia.org/wiki/%3F :) 'Variable = (Bedingung? Wert wenn wahr: Wert wenn falsch)'. –