Powershell で正規表現文字列に基づいて行を削除するにはどうすればいいですか?

Powershell で正規表現文字列に基づいて行を削除するにはどうすればいいですか?

ある行の上の行が存在するかどうかを検証したいのですが、そうでない場合は、その行を削除して空白を削除しますか? これは PowerShell で実行できますか? 助けてください

すべての行が「^37」で始まっていて、行が 33 で始まっている場合は OK です。そうでない場合は、その行を削除し、空白も削除してください。現在、私のファイルにはこの問題のようなインスタンスが 10 万件以上あります。助けてください...非常に緊急です。

TestData.txt ファイル:-

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,,,/

答え1

次のコマンドレットを試してください。

#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

a.txtファイル名に置き換えます。

関連情報