Ich habe ein PowerShell-Skript geschrieben, in dem ich die Datei lese (nicht notwendig, dass es CSV ist). In diesem habe ich zwei Spalten, Fallnummer und Cin-Nummer. Ich möchte alle Datensätze entfernen, wenn dieses Paar wiederholt wird immerSo entfernen Sie doppelte Datensätze basierend auf einem Wertepaar in Powershell?
Eingabedatei:
abc 1234 class1
def 1234 class2
abc 5678 class3
def 1234 class4
ghi 1001 class5
gewünschte Ausgabe ist:
abc 1234 class1
def 1234 class2
abc 5678 class3
ghi 1001 class5
Dafür ich folgende Skript wrriten haben (Eingabedatei wird mehr haben Spalten):
$inputFile ="D:\powershell\test files\01PRD_MAGI_12_03.txt";
$outputFile = "D:\powershell\test files\output.txt" ;
$stream = [System.IO.StreamWriter]"$outputFile"
$seenPair = @{}
$lines = Get-Content $inputFile
$count = 0
foreach($line in $lines){
$count = $count + 1
#write all header rows and last line as it is in output file
if($count -eq 1 -or $count -eq 2 -or $count -eq 3 -or $line.startsWith('*') -or $line.startsWith('-')){
$stream.WriteLine($line);
}
else{
$ldrCaseNum = $line.Substring(3,7)
$cin = $line.Substring(70,9)
if($seenPair.Contains($ldrCaseNum)){
$cinVal = $seenPair.Get_Item($ldrCaseNum)
if($cin -eq $cinVal){
continue;
}
else{
$stream.WriteLine($line)
}
}
else{
$seenPair.Add($ldrCaseNum,$cin)
$stream.WriteLine($line)
}
}
}
$stream.close()
Aber in diesem Fall, wenn ein gleiches Paar wiederholt wird, was Wird in der Variablen $ seenPair gespeichert, dann wird dieser Datensatz entfernt. Aber für denselben Schlüssel wird ein anderes Wertepaar wiederholt, dann wird es nicht entfernt, da es bereits einen Wert für diesen Schlüssel enthält.
Beispiel:
abc 1234 class1
def 1234 class2
abc 5678 class3
abc 5678 class3
def 1234 class4
ghi 1001 class5
Ausgang wird sein:
abc 1234 class1
def 1234 class2
abc 5678 class3
abc 5678 class3
ghi 1001 class5
Wunsch Ausgabe lautet:
abc 1234 class1
def 1234 class2
abc 5678 class3
ghi 1001 class5
Gibt es eine andere Lösung?
, wenn ich Ihren zweiten Befehl ausführen, werden die Daten als Kopf kommenden = "", header = "", ... innerhalb von csv in jeder Zeile. Warum ist es so? – Madhusudan
in welchem csv? Ich gebe nicht nach csv –
aus Ich las den Inhalt von $ Objects | Sort-Object -Property Case, Cin -Unique diese commant in einer Variablen $ Daten und ich schreibe es in eine Datei .. – Madhusudan