wake-up-neo.com

Verwenden von PowerShell zum Entfernen von Zeilen aus einer Textdatei, wenn diese eine Zeichenfolge enthält

Ich versuche, alle Zeilen aus einer Textdatei zu entfernen, die eine Teilzeichenfolge enthält, indem ich den folgenden PowerShell-Code verwende:

 Get-Content C:\new\temp_*.txt | Select-String -pattern "H|159" -notmatch | Out-File C:\new\newfile.txt

Die tatsächliche Zeichenfolge ist H|159|28-05-2005|508|xxx, wird in der Datei mehrmals wiederholt, und ich versuche, nur den oben angegebenen ersten Teil zuzuordnen. Ist das korrekt? Momentan werde ich als Ausgabe leer.

Vermisse ich etwas?

22
user3759904

Entfliehen Sie dem | Zeichen mit einem Backtick

get-content c:\new\temp_*.txt | select-string -pattern 'H`|159' -notmatch | Out-File c:\new\newfile.txt
19
Fourkeys

Angenommen, Sie möchten das in dieselbe Datei schreiben, dann können Sie wie folgt vorgehen:

Set-Content -Path "C:\temp\Newtext.txt" -Value (get-content -Path "c:\Temp\Newtext.txt" | Select-String -Pattern 'H\|159' -NotMatch)
15
Samselvaprabu

Das Pipe-Zeichen | hat in regulären Ausdrücken eine besondere Bedeutung. a|b bedeutet "Entspricht entweder a oder b". Wenn Sie ein Literal zuordnen möchten, | Charakter, müssen Sie es zu entkommen:

... | Select-String -Pattern 'H\|159' -NotMatch | ...
2
Ansgar Wiechers