none
CSV File modifizieren RRS feed

  • Frage

  • Hallo Zusammen,

    muss ein CSV Datei modifzieren. Habe (fast) alles schon erledigt aber an 2 Sachen scheitere ich grandios :(

    Die Datei sieht so aus

    Datum,Zeit,wert1,wert2,wert3

    2015.04.27,10:00:00,a,b,c

    Diese muss aber so aussehen

    Datum,Zeit,wert1,wert2,wert3

    27.04.15,10:00,a,b,cNochmal zusammengefasst

    Datum, muss tag,monat,jahr(2stellig)  und die Uhrzeit müssen die sekunden hinten weg, dies für jede Zeile. Vielleicht noch als Ergänzung, das Datum und die Uhrzeit ist IMMER so aufgebaut.

    Kann sowas per Powershell erledigen ? Wenn ja wie.

    Danke für alle Tips & tricks

    Grüße

    Ralf

    Montag, 27. April 2015 19:13

Antworten

  • Hier mal ein Lösungsansatz:

    PS > pushd $env:TEMP
    
    PS > Get-Content .\test1.csv
    Datum,Zeit,wert1,wert2,wert3
    2015.04.27,10:00:00,a,b,c
    2015.04.28,11:00:00,a,b,c
    
    
    PS > Import-Csv $env:TEMP\test1.csv | Select `
        @{Label='Datum';Expression={if ($_.Datum -match '^(?<year>\d*)\.(?<month>\d*)\.(?<day>\d*)') {Get-Date -Year $matches.year -Month $matches.month -Day $matches.day -UFormat "%d.%m.%y"}}},
        @{Label='Zeit';Expression={$_.Zeit -replace ':\d\d$',''}},
        Wert1,
        Wert2,
        Wert3 | 
        ConvertTo-Csv -NoTypeInformation | foreach {$_ -replace '"', ""} | Out-File $env:TEMP\test2.csv -Encoding ASCII -Force
    
    
    PS > Get-Content .\test2.csv
    Datum,Zeit,wert1,wert2,wert3
    27.04.15,10:00,a,b,c
    28.04.15,11:00,a,b,c

    Gruß
    Joachim




    • Bearbeitet Joachim Meyer Montag, 27. April 2015 21:19
    • Als Antwort markiert Ralf2015 Dienstag, 28. April 2015 19:34
    Montag, 27. April 2015 20:35

Alle Antworten

  • Hier mal ein Lösungsansatz:

    PS > pushd $env:TEMP
    
    PS > Get-Content .\test1.csv
    Datum,Zeit,wert1,wert2,wert3
    2015.04.27,10:00:00,a,b,c
    2015.04.28,11:00:00,a,b,c
    
    
    PS > Import-Csv $env:TEMP\test1.csv | Select `
        @{Label='Datum';Expression={if ($_.Datum -match '^(?<year>\d*)\.(?<month>\d*)\.(?<day>\d*)') {Get-Date -Year $matches.year -Month $matches.month -Day $matches.day -UFormat "%d.%m.%y"}}},
        @{Label='Zeit';Expression={$_.Zeit -replace ':\d\d$',''}},
        Wert1,
        Wert2,
        Wert3 | 
        ConvertTo-Csv -NoTypeInformation | foreach {$_ -replace '"', ""} | Out-File $env:TEMP\test2.csv -Encoding ASCII -Force
    
    
    PS > Get-Content .\test2.csv
    Datum,Zeit,wert1,wert2,wert3
    27.04.15,10:00,a,b,c
    28.04.15,11:00,a,b,c

    Gruß
    Joachim




    • Bearbeitet Joachim Meyer Montag, 27. April 2015 21:19
    • Als Antwort markiert Ralf2015 Dienstag, 28. April 2015 19:34
    Montag, 27. April 2015 20:35
  • HAllo Joachim,

    danke, genau dass was ich haben wolle.

    Grüße

    Dienstag, 28. April 2015 19:35