Powershell에서 정규식 문자열을 기반으로 줄을 삭제하는 방법은 무엇입니까?

Powershell에서 정규식 문자열을 기반으로 줄을 삭제하는 방법은 무엇입니까?

특정 줄 위의 줄이 있는지 확인하고 싶습니다. 그러면 괜찮습니다. 그렇지 않은 경우 해당 줄을 삭제하고 빈 공간을 제거하시겠습니까? 파워쉘에서 할 수 있나요? 도와주세요

"^37"로 시작하는 모든 줄 앞에 있고 줄이 33으로 시작하면 OK입니다. 그렇지 않으면 해당 줄을 삭제하고 빈 공간도 제거하십시오. 이제 내 파일에는 이 문제와 같은 사례가 십만 개 이상 있습니다. 도와주세요...매우 긴급합니다.

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파일 이름으로 바꾸십시오 .

관련 정보