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?
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
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)
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 | ...