Frage zu Powershell - fast perfektes Skript vorhanden
Moin moin aus dem Norden!
Ich habe gerade hier ein fast perfektes Skript für mich gefunden, komme aber nicht in der Anpassung weiter:
Doppelte Datensätze in einer CSV kennzeichnen
Wie kann ich bewirken, dass ich nachfolgende Ausgabe erhalten:
(Bei gleichem Wert in der ersten Spalte TRUE; vermerken (in der letzten Spalte) sonst FALSE; )
Eingabe-CSV wie folgt:
Beste Grüße, freshman2017
Ich habe gerade hier ein fast perfektes Skript für mich gefunden, komme aber nicht in der Anpassung weiter:
Doppelte Datensätze in einer CSV kennzeichnen
$quelle = 'D:\test.csv'
$ziel = 'D:\test_out.csv'
$numcols = (gc $quelle -head 1).split(";").count
$csv = Import-CSV $quelle -Delimiter ";" -Header (1..$numcols)
($csv | group '1' | %{
if ($_.Count -gt 1){
$_.Group | %{$_.$numcols = 1}
$_.Group
}else{
$_.Group
}
} | ConvertTo-CSV -delimiter ";" -NoType | select -Skip 1) -replace '"','' | sc $ziel
Wie kann ich bewirken, dass ich nachfolgende Ausgabe erhalten:
(Bei gleichem Wert in der ersten Spalte TRUE; vermerken (in der letzten Spalte) sonst FALSE; )
BANANEN;500,00;5;TRUE;
BANANEN;500,00;10;TRUE;
KIRSCHEN;45,00;10;FALSE;
ÄPFEL;5,00;50;FALSE;
125;5,00:50;FALSE;
Eingabe-CSV wie folgt:
BANANEN;500,00;5;
BANANEN;500,00;10;
KIRSCHEN;45,00;10;
ÄPFEL;5,00;50;
125;5,00:50;
Beste Grüße, freshman2017
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 483906
Url: https://administrator.de/contentid/483906
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
4 Kommentare
Neuester Kommentar
Zitat von @freshman2017:
Wie kann ich bewirken, dass ich nachfolgende Ausgabe erhalten:
(Bei gleichem Wert in der ersten Spalte TRUE; vermerken (in der letzten Spalte) sonst FALSE; )
Eingabe-CSV wie folgt:
Wie kann ich bewirken, dass ich nachfolgende Ausgabe erhalten:
(Bei gleichem Wert in der ersten Spalte TRUE; vermerken (in der letzten Spalte) sonst FALSE; )
> BANANEN;500,00;5;TRUE;
> BANANEN;500,00;10;TRUE;
> KIRSCHEN;45,00;10;FALSE;
> ÄPFEL;5,00;50;FALSE;
> 125;5,00:50;FALSE;
>
Eingabe-CSV wie folgt:
> BANANEN;500,00;5;
> BANANEN;500,00;10;
> KIRSCHEN;45,00;10;
> ÄPFEL;5,00;50;
> 125;5,00:50;
>
Würdest Du mal ordentlich spezifizieren, anhand welcher Kriterien true oder false dastehen soll. Das hast Du offensichtlich im letzten Thread auch schon etwas ungenau gemacht.
lks
Hi,
@freshman2017
Fehler in Zeile 5 der Quelle ausmerzen.
Alles klar?
Vergiss nicht: -> Wie kann ich einen Beitrag als gelöst markieren?
Gruss BFF
@freshman2017
Fehler in Zeile 5 der Quelle ausmerzen.
$quelle = 'D:\qqqtest.csv'
$ziel = 'D:\qqqtest_out.csv'
$numcols = (gc $quelle -head 1).split(";").count
$csv = Import-CSV $quelle -Delimiter ";" -Header (1..$numcols)
($csv | group '1' | %{
if ($_.Count -gt 1){
$_.Group | %{$_.$numcols = "TRUE"}
$_.Group
}else{
$_.Group | %{$_.$numcols = "FALSE"}
$_.Group
}
} | ConvertTo-CSV -delimiter ";" -NoType | select -Skip 1) -replace '"','' | sc $ziel
Alles klar?
Vergiss nicht: -> Wie kann ich einen Beitrag als gelöst markieren?
Gruss BFF
So kann man es auch machen
$quelle = 'D:\qqqtest.csv'
$ziel = 'D:\qqqtest_out.csv'
$content = Get-Content $quelle -ReadCount 1000
$dupes = $content | %{$_.split(";")} | group -NoElement | ?{$_.Count -gt 1} | select -Expand Name
$content | %{if ($_.split(";") -in $dupes){"$($_)TRUE;"}else{"$($_)FALSE;"}} | Set-Content $ziel