如何在Powershell中刪除基於正規表示式字串的行?

如何在Powershell中刪除基於正規表示式字串的行?

我想驗證某行上方的行是否存在,然後就可以了。如果是,則刪除該行並刪除空格?這可以在 powershell 中完成嗎?請幫忙

如果在所有以「^37」開頭的行之前,如果該行以 33 開頭,則確定。否則,刪除該行並刪除空白區域。現在,我的檔案中有超過十萬個類似問題的實例。請幫忙...非常緊急。

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

試試以下 cmdlet:

#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為您的檔案名稱。

相關內容