source

텍스트 파일의 내용을 파워셸의 정규식으로 바꾸기

manycodes 2023. 8. 9. 20:53
반응형

텍스트 파일의 내용을 파워셸의 정규식으로 바꾸기

간단한 텍스트 파일이 있는데 파일 내용의 일부를 대체할 파워셸 스크립트가 필요합니다.

현재 스크립트는 다음과 같습니다.

$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"

파이프라인에서 하나 이상의 교체 작업을 수행할 수 있습니까?

네.

  1. 위와 같이: 더 추가하기만 하면 됩니다.Foreach-Object세그먼트
  2. ~하듯이-replace결과를 반환합니다. 단일 식으로 연결할 수 있습니다.

    ($_ -replace $a,$b) -replace $c,$d
    

    괄호가 필요하지 않다고 생각하지만, 저는 괄호가 읽기 쉽게 한다고 생각합니다. 분명히 몇 개 이상의 연결된 연산자(특히 매치/교체가 중요하지 않은 경우)는 명확하지 않을 것입니다.

언급URL : https://stackoverflow.com/questions/16250258/replace-the-content-of-a-textfile-with-a-regex-in-powershell

반응형