Wie lösche ich in Powershell eine Zeile basierend auf einer Regex-Zeichenfolge?

Wie lösche ich in Powershell eine Zeile basierend auf einer Regex-Zeichenfolge?

Ich möchte überprüfen, ob die Zeile über einer bestimmten Zeile vorhanden ist, dann ok. Wenn nicht, dann diese Zeile löschen und das leere Leerzeichen entfernen? Kann dies in Powershell gemacht werden? Bitte helfen Sie

Wenn vor allen Zeilen, die mit "^37" beginnen, eine Zeile mit 33 beginnt, dann OK. Andernfalls löschen Sie diese Zeile und entfernen Sie auch das Leerzeichen. In meiner Datei gibt es mittlerweile über hunderttausend Fälle dieses Problems. Bitte helfen Sie ... es ist sehr dringend.

TestData.txt-Datei: -

03,201779,,01354,73923309,,,TEST2,7962753,,,0343,5087632,,/#end of line
04,399,777873,,,,text234,,,,/ 
33,TEST1,,,0343,,93493,,,343,,,,TEST3,,,,,,/
37,TEST37,text
49,24605597,6,343,343,343,,,3434,,,/

Antwort1

Versuchen Sie die folgenden Cmdlets:

#Get the file's content and join each line with newline character
#because by default splits lines by newline. So, the need to rejoin the lines 
$text = [string]::Join("`n", (Get-Content a.txt))

#Find and replace the pattern, then output the result to file
#The file's content is replaced
[regex]::Replace($text, "^3[^3].+`n^(37.+)", '$1', "Multiline") | Out-file a.txt

Ersetzen Sie es a.txtdurch Ihren Dateinamen.

verwandte Informationen