Ich passe zwei Dateien basierend auf PersonID an und gebe sie an eine dritte (ListAfinal) aus. Im Wesentlichen füge ich die Adresse und die Telefonnummern für jene Einträge hinzu, die es haben, und füge Leerzeichen für jene hinzu, die es nicht haben. Ich möchte die Zeilen aus ListB entfernen, die mit ListA übereinstimmten, so dass nach dem Matching eine ListB ohne Übereinstimmungen in ListA übrig bleibt.Zeile nach einer Übereinstimmung aus der Datei entfernen
$f1=(import-csv 'C:\Desktop\ListA.csv' -header FirstName, LastName, Birthdate, PersonID, Address, PhoneNumber)[1..999]
$f2=(import-csv 'C:\Desktop\ListB.csv' -header PersonID, Address, PhoneNumber)[1..999]
$f1|
%{
$PersonID=$_.PersonID
$m=$f2|?{$_.PersonID -eq $PersonID}
$_. Address=$m.Address
$_. PhoneNumber=$m.PhoneNumber
}
$f1 | ConvertTo-Csv -NoTypeInformation | select -Skip 1 | % {$_.Replace('"','')} | Out-File 'C:\Desktop\ListAFinal.csv'
Jede Methode, die ich online gefunden haben, funktioniert die Abführleitung aus der Basis einer bestimmten Zeichenfolge, aber in meinem Fall möchte ich nur die Linie entfernen, wenn sie abgestimmt wurde. Irgendwelche Ideen?
Dies als Schnipsel über meinen Code viel besser funktioniert. Nach dem Abgleich entfernt das Beispiel jedoch nicht die Zeilen aus ListB, die mit ListA "übereinstimmen". – JRod
Das ist ziemlich trivial. Siehe aktualisierte Antwort. –
Das ist perfekt! Ich danke dir sehr! Mir ist nicht aufgefallen, dass ich die Aktion der Variablen zuweisen soll, und setze dann die Bedingung gegen diese Variable. Vielen Dank. – JRod