텍스트 파일의 내용을 파워셸의 정규식으로 바꾸기
간단한 텍스트 파일이 있는데 파일 내용의 일부를 대체할 파워셸 스크립트가 필요합니다.
현재 스크립트는 다음과 같습니다.
$content = Get-Content -path "Input.json"
$content -Replace '"(\d+),(\d{1,})"', '$1.$2' | Out-File "output.json"
이렇게 내용 변수 없이 한 줄로 쓸 수 있습니까?
Get-Content -path "Input.json" | ??? -Replace '"(\d+),(\d{1,})"', '$1.$2' | Out-File "output.json"
$content 변수 없이 두 번째 명령에서 첫 번째 get-content commandlet의 출력을 어떻게 사용할 수 있는지 모르겠습니다.자동 파워셸 변수가 있습니까?
파이프라인에서 하나 이상의 교체 작업을 수행할 수 있습니까?
Get-Content -path "Input.json" | ??? -Replace '"(\d+),(\d{1,})"', '$1.$2' | ??? -Replace 'second regex', 'second replacement' | Out-File "output.json"
예, 한 줄로 할 수 있으며 파이프라인도 필요하지 않습니다.-replace
예상대로 어레이에서 작동합니다(연산자를 연결할 수 있음).
(Get-Content Input.json) `
-replace '"(\d+),(\d{1,})"', '$1.$2' `
-replace 'second regex', 'second replacement' |
Out-File output.json
(가독성을 위해 줄 바꿈 추가)
주변의 괄호Get-Content
전화는 예방하기 위해 필요합니다.-replace
에 대한 인수로 해석되는 연산자Get-Content
.
이렇게 내용 변수 없이 한 줄로 쓸 수 있습니까?
예: 사용ForEach-Object
(또는 별칭)%
) 그 다음$_
파이프라인의 개체를 참조합니다.
Get-Content -path "Input.json" | % { $_ -Replace '"(\d+),(\d{1,})"', '$1.$2' } | Out-File "output.json"
파이프라인에서 하나 이상의 교체 작업을 수행할 수 있습니까?
네.
- 위와 같이: 더 추가하기만 하면 됩니다.
Foreach-Object
세그먼트 ~하듯이
-replace
결과를 반환합니다. 단일 식으로 연결할 수 있습니다.($_ -replace $a,$b) -replace $c,$d
괄호가 필요하지 않다고 생각하지만, 저는 괄호가 읽기 쉽게 한다고 생각합니다. 분명히 몇 개 이상의 연결된 연산자(특히 매치/교체가 중요하지 않은 경우)는 명확하지 않을 것입니다.
언급URL : https://stackoverflow.com/questions/16250258/replace-the-content-of-a-textfile-with-a-regex-in-powershell
'source' 카테고리의 다른 글
IIS 대신 Cassini를 사용하면 어떤 장점이 있습니까? (0) | 2023.08.09 |
---|---|
ASP.NET MVC에서 레이저 @Url을 사용하려면 어떻게 해야 합니까?C# 코드의 내용() 도우미? (0) | 2023.08.09 |
업데이트 메서드 호출 없이 트랜잭션 저장 (0) | 2023.08.09 |
스위프트에서 열거형을 프로토콜에 맞게 만드는 방법은 무엇입니까? (0) | 2023.08.09 |
Mongoose - 실행 기능은 무엇을 합니까? (0) | 2023.08.09 |