exitquit
Goto Top

Txt Datei transponieren über Powershell

Hallo Zusammen!


ich bin gerade dabei eine kleine Auswertung zu erstellen. Bekomme meine Daten aber in einem kaum brauchbaren Format.
Um diese weiter zu verarbeiten habe ich mich dazu entschieden mit etwas näher mit PowerShell zu befassen.(Zuvor nur kleinere Scripte für die Datensicherung, Benachrichtigungen bei Prozessausfall, Automatische Programmstart etc. erstellt)


Folgenden Input habe ich zur mir exportieren können.

8;01.06.2022; 7,5
8;02.06.2022; 7,5
8;03.06.2022; 7,6
8;04.06.2022; 7,6
8;05.06.2022; 8,4
8;06.06.2022; 7,5
8;07.06.2022; 
8;08.06.2022; 
8;09.06.2022; 7,5
8;10.06.2022; 5
8;11.06.2022; 6
8;12.06.2022; 7
8;13.06.2022; 7,8
8;14.06.2022; 7,5
8;15.06.2022; 7,5
8;16.06.2022; 7,5
8;17.06.2022; 7,5
8;18.06.2022; 7,5
8;18.06.2022; 
8;19.06.2022; 
8;20.06.2022; 7,5
8;21.06.2022; 7,5
8;22.06.2022; 7,5
8;23.06.2022; 7,5
8;24.06.2022; 7,1
8;25.06.2022; 7,2
8;26.06.2022; 7,8
8;27.06.2022; 
8;28.06.2022; 6,4
8;29.06.2022; 7,5
8;30.06.2022; 7,5

Um diesen Export in einem anderen Programm zu Importieren brauche ich diese in folgendem Format.

8.06.2022; 7,5;7,5;7,6;7,6;8,4;7,5;;;7,5...

Für den gesamten Input oben gibt es also nur eine Zeile die den Output beschreibt. Hierbei ist es entscheidend, dass die erste Zahl eine Kombination aus dem Column1 und Column2 des Inputs ist. Das heißt die "8" wird aus Colum1 entnommen und beim Colum2 lediglich die 2-8 Position (.06.2022). Die beiden Werte werden entsprechend zusammengeführt und im Output als Colum1 ausgegeben.

Das mit dem Datum mag sehr verwirrend sein, jedoch brauche ich eigentlich nur die Kennziffer aus Colum1 und MM.YYYY aus Colum2. Dies zusammengesetzt ist ein Schlüsselfeld in einem anderen Programm (Kennziffer.MM.YYYY) welches ich Updaten möchte.

Colum3 des Inuputs wird transponiert und in Column2 - ColumnN des Outputs ausgegeben.


Ist das in irgend einer weiße mit PowerShell umsetzbar?
Den Import der .txt Input Datei und den Output habe ich mit bereits zusammenreimen können. Aus dem Colum2 kann ich mit einem Substring das MM.YYYY aus dem Datum auslesen
$_.Substring(2,8)

Ich habe allerdings das Gefühl dass ich gerade nicht weiter komme. Ich habe keine gute Quelle zum Transponieren einer Colomn über PowerShell gefunden.
Falls jemand sich da auskennt, Zeit und Lust hat mir dabei zu helfen oder auch entsprechende Quellen kennt wäre ich um jede Hilfe dankbar!

Content-Key: 3202437318

Url: https://administrator.de/contentid/3202437318

Printed on: April 26, 2024 at 04:04 o'clock

Member: mbehrens
Solution mbehrens Jun 28, 2022 at 22:20:59 (UTC)
Goto Top
Als ein erster Ansatz

Importieren der Daten:
$Daten = Import-Csv -Path .\Datendatei -Header 'Spalte01', 'Spalte02', 'Spalte03' -Delimiter ';'  

Transformieren:
$Daten.Spalte01.Item(1) + $Daten.Spalte02.Item(1).Substring(3,7) + ';' + ($Daten.Spalte03 -Join ';')  
Member: colinardo
Solution colinardo Jun 29, 2022 updated at 09:34:36 (UTC)
Goto Top
Servus @exitquit, willkommen auf Administrator.de!
Und falls auch noch mehrere unterschiedliche Kombinationen aus Kennziffern und Datum-Werten in der selben Datei vorkommen können erledigt das der folgende Einzeiler gleich mit
Import-Csv .\demo.csv -delimiter ';' -header (1..3) | group {"$($_.1)$(($_.2).Substring(2))"} | %{"$($_.Name);$($_.Group.3 -join ';')"}  
Online-Demo

Grüße Uwe
Member: exitquit
exitquit Jun 30, 2022 at 19:13:06 (UTC)
Goto Top
@colinardo @mbehrens Sehr geil! Das war ja quasi schon die ganze Lösung :D
Vielen Lieben dank an euch! Das hat mir schon gereicht. Von da hab ich mir das Script zusammenbasteln können.
Member: colinardo
colinardo Jun 30, 2022 at 19:23:57 (UTC)
Goto Top
👍.