PowerShell을 사용하여 새 라인을 교체하려면 어떻게 해야 합니까?
주어진 시험.다음을 포함하는 txt:
test
message
저는 다음과 같이 마무리하고 싶습니다.
testing
a message
다음이 작동해야 한다고 생각하지만 작동하지 않습니다.
Get-Content test.txt |% {$_-replace "t`r`n", "ting`r`na "}
CRLF가 포함된 위치를 찾고 대체하려면 어떻게 해야 합니까?
CRLF는 CR과 LF의 두 문자입니다.하지만,`n
둘 다로 구성됩니다.예:
PS C:\> $x = "Hello
>> World"
PS C:\> $x
Hello
World
PS C:\> $x.contains("`n")
True
PS C:\> $x.contains("`r")
False
PS C:\> $x.replace("o`nW","o There`nThe W")
Hello There
The World
PS C:\>
제 생각에 당신은 그 문제에 부딪히고 있는 것 같습니다.`r
저는 그것을 제거할 수 있었습니다.`r
예제에서 사용만`n
,그리고 그것은 성공하였다.물론, 나는 당신이 어떻게 원본 문자열을 생성했는지 정확히 모르기 때문에 그 안에 무엇이 있는지 모릅니다.
제가 알기로는 Get-Content는 파이프라인을 통해 텍스트 파일을 롤링할 때 모든 새 줄/캐리지 리턴을 제거합니다.여러 줄의 정규식을 수행하려면 문자열 배열을 하나의 큰 문자열로 다시 결합해야 합니다.저는 다음과 같은 일을 합니다.
$text = [string]::Join("`n", (Get-Content test.txt))
[regex]::Replace($text, "t`n", "ting`na ", "Singleline")
설명: 작은 파일만 있습니다. 여러분!40GB 로그 파일에서 이것을 시도하지 마십시오 :)
와 함께-Raw
당신은 당신이 기대하는 것을 얻어야 합니다.
모든 새 줄 문자를 제거하고 일부 문자(예: 쉼표)로 바꾸려면 다음을 사용할 수 있습니다.
(Get-Content test.txt) -join ","
이것은 Get-Content가 줄 배열을 반환하기 때문에 작동합니다.다양한 언어로 토큰화 기능으로 볼 수 있습니다.
사용할 수 있습니다."\\r\\n"
의 새로운 라인에 대해서도.powershell
나는 이것을 지금 서비스 도구에서 사용했습니다.
내 경우에는"\r\n"
일이 안되서 노력했습니다."\\r\\n"
~하듯이"\"
이 기호는 탈출 문자로 작동합니다.powershell
.
이 간단한 Powershell 지침으로 파일이 CRLF인지 탐지할 수 있습니다.
(cat -Raw $args) -match "\r\n$"
\n을 \r\n으로 교체하는 것은 먼저 감지하고 필요한 경우에만 교체를 적용해야 하기 때문에 까다롭습니다. 그렇지 않으면 엉망이 될 것입니다.너무 복잡합니다.
어떤 경우에도 탐지를 잊어버릴 수 있습니다. 파일이 CRLF인지 확인하려면 PowerShell에서 이 작업을 수행할 수 있습니다.
cat $file > $file
언급URL : https://stackoverflow.com/questions/325953/how-can-i-replace-newlines-using-powershell
'programing' 카테고리의 다른 글
여러 주석을 한 번에 표시하도록 MKMapView 배치 (0) | 2023.08.25 |
---|---|
jQuery를 사용하여 AJAX HTTPS GET 요청을 만드는 방법 (0) | 2023.08.25 |
angular cli 프로젝트에 node_modules의 자산을 포함하는 방법 (0) | 2023.08.25 |
프롬프트 없이 새 Excel 문서를 매크로가 없는 워크북으로 저장 (0) | 2023.08.25 |
MySQL Workbench에서 글꼴 변경 (0) | 2023.08.25 |