파워쉘의 모든 Replace 메서드
-
PowerShell의
replace()
메서드 소개 -
PowerShell에서
replace()
메서드 사용하기 - PowerShell에서 문자 제거하기
- PowerShell에서 여러 인스턴스 교체하기
- PowerShell에서 교체 연산자 사용하기
- PowerShell에서 문자 제거하기
- PowerShell에서 여러 인스턴스 교체하기
- PowerShell에서 정규식을 사용한 문자열 교체
- PowerShell에서 정규식 문자 이스케이프하기

Windows PowerShell은 다른 많은 언어와 같이 텍스트와 문자열을 처리할 수 있습니다. 이러한 유용한 기능 중 하나는 Windows PowerShell을 사용하여 파일 내의 문자, 문자열 또는 텍스트를 교체하는 것입니다.
이 문서에서는 다양한 PowerShell 교체 방법을 사용하여 문자, 텍스트 및 단어를 교체하거나 삭제하는 방법에 대해 논의합니다.
PowerShell의 replace()
메서드 소개
Windows PowerShell을 사용하여 문자열의 문자를 교체할 수 있습니다. 예를 들어, 이 문서 전반에 걸쳐 사용할 데이터 유형 문자열을 가진 PowerShell 변수를 생성합니다.
$string = 'hello, world'
우리는 문자열 내의 hello
단어를 hi
단어로 교체하여 $string
변수가 hi, world
값을 갖도록 하고자 합니다.
이를 실행하기 위해 Windows PowerShell은 특정 텍스트 부분을 찾는 방법을 알아내야 하며, 일단 찾으면 해당 텍스트 부분을 사용자 제공 값으로 교체합니다.
PowerShell에서 replace()
메서드 사용하기
Windows PowerShell에서 문자열을 교체하는 가장 편리한 방법 중 하나는 replace()
메서드를 사용하는 것입니다. replace()
메서드는 두 개의 인수를 받습니다.
- 찾을 문자열.
- 찾은 텍스트를 교체할 문자열.
아래에서 볼 수 있듯이, Windows PowerShell은 단어 hello
를 찾아 문자열 hi
로 교체합니다. 이 메서드는 최종 결과인 hi, world
를 반환합니다.
추가로 만든 $string
변수를 예로 들어 보겠습니다.
코드:
$string.replace('hello', 'hi')
출력:
hi, world
우리는 어떤 문자에 대해서도 replace()
메서드를 호출하여 임의의 리터럴 문자열을 다른 문자열로 교체할 수 있습니다. 교체할 문자열이 발견되지 않으면 replace()
메서드는 아무 것도 반환하지 않습니다.
또한, 문자열에서 텍스트를 교체하기 위해 문자열을 변수에 할당할 필요는 없습니다. 대신, 문자열에서 직접 replace()
메서드를 호출할 수 있습니다.
코드:
'hello world'.replace('hello', 'hi')
PowerShell에서 문자 제거하기
아마도 우리는 다른 문자열에서 텍스트의 문자를 제거해야 할 수 있으며, 그 대신에 무언가로 교체할 필요는 없습니다. 우리는 빈 문자열을 지정하여 그것을 수행할 수도 있습니다.
코드:
$string.replace('hello', '')
출력:
, world
PowerShell에서 여러 인스턴스 교체하기
replace()
메서드가 문자열 데이터 유형의 값을 반환하므로, 또 다른 인스턴스를 교체하기 위해 우리는 끝에 또 다른 replace()
메서드 호출을 연결하고 추가할 수 있습니다. Windows PowerShell은 실제 출력에서 replace()
메서드를 호출합니다.
코드:
$string.replace('hello', '').replace('world', 'earth')
출력:
, earth
필요한 만큼 많은 replace()
메서드 호출을 연결할 수 있지만, 여러 문자열을 교체해야 하는 경우에는 교체 연산자를 사용하는 것이 좋습니다.
PowerShell에서 교체 연산자 사용하기
우리는 또한 Windows PowerShell의 교체 연산자를 사용하여 텍스트를 교체할 수 있습니다. 교체 연산자는 문자열을 찾아서 교체하도록 제공하는 메서드와 유사합니다.
하지만, 하나의 중대한 장점이 있습니다: 정규 표현식(정규식)을 사용하여 일치하는 문자열을 찾는 것입니다. 이전 예제를 사용하여 hello
를 hi
로 교체하는 것을 비슷하게 수행할 수 있습니다.
코드:
$string -replace 'hello', 'hi'
출력:
hi, world
PowerShell에서 문자 제거하기
replace()
메서드와 마찬가지로, 우리는 또한 교체 연산자를 사용하여 문자열에서 문자를 삭제할 수 있습니다. replace()
메서드와 달리, 우리는 교체할 문자열을 인수로 완전히 제외할 수도 있으며, 같은 효과를 발견하게 됩니다.
코드:
$string -replace 'hello', ''
$string -replace 'hello'
출력:
, world
, world
PowerShell에서 여러 인스턴스 교체하기
교체 연산자 사용을 함께 연결할 수도 있습니다.
코드:
$string -replace 'hello', 'hi' -replace 'world', 'earth'
출력:
hi, earth
PowerShell에서 정규식을 사용한 문자열 교체
PowerShell에서 replace()
를 사용하여 문자열을 교체하는 것은 제한적입니다. 우리는 리터럴 문자열만 사용할 수 있습니다.
와일드카드나 정규식을 사용할 수 없습니다. 중급 또는 고급을 수행하는 경우, 우리는 교체 연산자를 사용하는 것이 좋습니다.
변수를 사용하여 생성된 문자열이 포함된 스크립트가 있습니다. 우리는 문자열의 값을 무시하고 goodbye, world
로 변경하고자 합니다.
이렇게 하려면 hello, world
와 hi, world
를 goodbye, world
로 변환하는 데 도움이 될 것입니다. 이를 위해서 정규 표현식을 사용하고 정규식으로 텍스트의 특정 패턴을 거의 모두 일치시켜야 합니다.
이 예제에서는 hello|hi
표현식을 사용하여 정규식 “또는” 연산자 또는 파이프(|
) 문자를 사용해 필요한 두 문자열을 모두 일치시킬 수 있습니다.
코드:
'hello, world' -replace 'hello|hi', 'goodbye'
'hi, world' -replace 'hello|hi', 'goodbye'
출력:
goodbye, world
goodbye, world
정규식을 사용하여 문자열을 찾는 방법을 배우면, PowerShell을 사용하여 어떤 패턴과 일치하는 와일드카드 문자열을 교체할 수 있습니다.
PowerShell에서 정규식 문자 이스케이프하기
위의 정규식 예제에서 검색할 문자열에는 특별한 정규식 문자가 포함되지 않았습니다. 그러나 정규 표현식 언어에는 대부분의 문자와 숫자처럼 문자적으로 해석되지 않는 특정 문자가 있습니다.
예를 들어, 문자열에서 텍스트를 교체해야 할 수도 있습니다. 해당 문자열에는 괄호와 물음표와 같은 몇 가지 특별한 정규식 문자가 포함되어 있습니다.
그런 다음 문자열 [hello]
를 goodbye
로 교체하려고 합니다.
코드:
PS> '[hello], world' -replace '[hello]', 'goodbye'
출력:
[goodbyegoodbyegoodbyegoodbyegoodbye], wgoodbyergoodbyed
우리가 의도한 것이 아닙니다. 이 시나리오는 문자열을 찾기 위해 특별한 정규식 문자를 사용할 때 발생합니다([hello]
).
이 문제를 피하기 위해, 각 문자의 앞에 백슬래시를 추가하여 이러한 특별한 문자를 이스케이프하거나 Escape()
메서드를 사용할 수 있습니다. 아래에서 각 특별한 문자를 백슬래시로 이스케이프하는 효과를 볼 수 있습니다.
코드:
'[hello], world' -replace '\[hello\]', 'goodbye'
출력:
goodbye, world
대안으로, 우리는 정규식 형식의 Escape()
메서드를 사용하여 모든 특별 문자를 자동으로 제거할 수 있습니다.
코드:
'[hello], world' -replace ([regex]::Escape('[hello]')), 'goodbye'
출력:
goodbye, world
모든 특별 문자를 이스케이프할 것이므로 Escape()
메서드를 사용하는 것이 좋습니다. 우리는 그것들을 기억할 필요가 없습니다.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn