PowerShell을 사용하여 파일의 텍스트를 대체하는 방법

  1. PowerShell을 사용하여 파일 내 모든 문자열 발생을 대체하기 위해 Get-ContentSet-Content 사용하기
  2. PowerShell을 사용하여 파일 내 모든 문자열 발생을 대체하기 위해 File 클래스 사용하기
  3. PowerShell을 사용하여 여러 파일 내 모든 문자열 발생을 대체하기
  4. 결론
PowerShell을 사용하여 파일의 텍스트를 대체하는 방법

PowerShell은 파일과 폴더를 관리하는 강력한 도구입니다. 시스템에서 파일과 폴더를 생성, 복사, 삭제, 이동, 이름 변경 및 보기 할 수 있습니다.

이 튜토리얼에서는 PowerShell을 사용하여 파일 내 모든 문자열 발생을 대체하는 다양한 방법을 소개합니다.

PowerShell을 사용하여 파일 내 모든 문자열 발생을 대체하기 위해 Get-ContentSet-Content 사용하기

'Get-Content' 명령은 제공된 경로의 항목 내용을 검색합니다. 예를 들어, 파일의 텍스트를 검색할 수 있습니다. 'Set-Content' cmdlet은 파일에 새 콘텐츠를 추가하거나 기존 콘텐츠를 교체할 수 있는 문자열 처리 도구입니다.

Get-ContentSet-Content cmdlet을 사용하여 파일 내 모든 문자열 발생을 대체할 수 있습니다.

구문:

(Get-Content -Path 'Path\to\Your\File.txt') -Replace 'OldString', 'NewString' | Set-Content -Path 'Path\to\Your\File.txt'

구문에서 우리는 'OldString'을 우리가 대체하고자 하는 문자열로, 'NewString'을 그 자리에 넣을 문자열로 대체합니다. 'Path\to\Your\File.txt'는 실제 파일 경로로 대체해야 합니다.

예를 들어, 디렉토리 (C:\New)에 다음 내용을 가진 텍스트 파일 (test.txt)이 있다고 가정해 보겠습니다.

Get-Content C:\New\test.txt

출력:

Welcome to Linux tutorials.
Linux is free.
Linux is powerful.

이제 -Replace 매개변의를 사용하여 test.txt 파일 내 문자열 'Linux'의 모든 발생을 'PowerShell'로 대체하겠습니다. Get-Content 주위에 괄호 ()가 필요합니다.

(Get-Content C:\New\test.txt) -Replace 'Linux', 'PowerShell' | Set-Content C:\New\test.txt

그런 다음, 변경 사항을 확인하기 위해 test.txt 파일의 내용을 봅니다.

Get-Content C:\New\test.txt

보시다시피, Linux는 성공적으로 PowerShell로 대체되었습니다.

출력:

Welcome to PowerShell tutorials.
PowerShell is free.
PowerShell is powerful.

이 방법은 파일에서 문자열을 찾고 교체하기 위해 문자열 배열을 사용합니다. Get-Content cmdlet은 배열을 반환하기 때문입니다. Get-Content가 단일 문자열을 반환하면 문자열을 대체하기가 더 쉽습니다.

아래와 같이 -Raw 매개변을 사용할 수 있습니다. -Raw 매개변은 'C:\New\test.txt'의 내용을 단일 문자열로 읽도록 보장하여 파일 전체에서 'Linux''PowerShell'로 효율적으로 대체할 수 있습니다.

(Get-Content C:\New\test.txt -Raw) -Replace 'Linux', 'PowerShell' | Set-Content C:\New\test.txt

이 코드에서는 'C:\New\test.txt'에 위치한 파일의 내용을 단일 문자열로 읽습니다. 그런 다음, -Replace 연산자를 사용하여 해당 문자열 내에서 모든 'Linux' 발생을 'PowerShell'로 찾고 대체합니다.

마지막으로 수정된 내용을 동일한 파일에 다시 저장하여 새로운 텍스트로 업데이트 합니다. 이 코드는 PowerShell을 사용하여 파일 내 텍스트 교체를 수행하는 간단한 방법입니다.

PowerShell을 사용하여 파일 내 모든 문자열 발생을 대체하기 위해 File 클래스 사용하기

File 클래스는 파일을 생성, 복사, 이동, 열기, 삭제 및 추가하는 일반 작업을 위한 정적 메서드를 제공합니다. 지정된 파일의 내용을 대체하려면 File 클래스의 Replace() 메서드를 사용하세요.

구문:

$string = [System.IO.File]::ReadAllText("FilePath")
$string = $string.Replace("OldString", "NewString")
[System.IO.File]::WriteAllText("FilePath", $string)

매개변수:

  • "FilePath": 여기에 실제 파일 경로를 대체해야 합니다.
  • "OldString": 대체할 문자열입니다.
  • "NewString": 대체할 문자열입니다.

ReadAllText() 메서드는 텍스트 파일을 열고 해당 파일의 모든 텍스트를 읽은 다음 파일을 닫습니다.

WriteAllText() 메서드는 새 파일을 생성하고 특정 문자열을 파일에 기록한 다음 파일을 닫습니다. 대상 파일이 해당 위치에 이미 존재하는 경우 덮어써집니다.

예를 들어, 디렉토리 (C:\New)에 다음 내용을 가진 텍스트 파일 (python.txt)이 있다고 가정해 보겠습니다.

Get-Content C:\New\python.txt

출력:

Find the best Python tutorials and learn Python easily from DelftStack.

이제 File 클래스 메서드를 사용하여 파일 내 문자열의 모든 발생을 대체하겠습니다.

$string = [System.IO.File]::ReadAllText("C:\New\python.txt").Replace("Python", "JavaScript")
[System.IO.File]::WriteAllText("C:\New\python.txt", $string)

위 코드에서는 $string이라는 변수를 생성하여 텍스트 교체를 수행한 후 'C:\New\python.txt' 파일의 수정된 내용을 저장합니다. [System.IO.File]::ReadAllText("C:\New\python.txt")를 사용하여 전체 파일 내용을 읽고 $string에 저장합니다.

다음 단계에서는 Replace() 메서드를 사용하여 내용 내에서 "Python"의 모든 인스턴스를 찾고 "JavaScript"로 대체하여 텍스트를 효과적으로 업데이트합니다. 마지막으로 [System.IO.File]::WriteAllText("C:\New\python.txt", $string)을 사용하여 수정된 내용을 다시 동일한 파일에 기록하여 원래 텍스트를 덮어쓰고 변경 사항을 보존합니다.

C:\New\python.txt에서 변경 사항을 확인합니다.

Get-Content C:\New\python.txt

출력:

Find the best JavaScript tutorials and learn JavaScript easily from DelftStack.

출력에서 "Python""JavaScript"로 대체된 것을 확인할 수 있습니다.

PowerShell을 사용하여 여러 파일 내 모든 문자열 발생을 대체하기

위 방법은 단일 파일에서 문자열을 대체합니다. 경우에 따라 여러 파일에서 동일한 문자열을 대체해야 할 수도 있습니다.

그럴 경우, 다음 명령을 사용하여 여러 파일에서 지정된 문자열의 모든 발생을 대체할 수 있습니다.

Get-ChildItem 'C:\New\*.txt' | foreach {
     (Get-Content $_) | foreach { $_ -Replace 'weekly', 'monthly' } | Set-Content $_
}

위 코드에서는 Get-ChildItem을 사용하여 'C:\New' 디렉토리의 '.txt' 파일 목록을 수집합니다. 별표 * 와일드카드는 .txt 파일 확장자를 가진 모든 파일을 지정합니다.

그런 다음 각 파일을 반복하여 Get-Content로 그 내용을 읽고 -Replace 연산자를 사용하여 'weekly''monthly'로 변경하는 교체 작업을 적용합니다. 수정된 내용은 Set-Content를 사용하여 동일한 파일에 다시 기록됩니다.

이 과정은 디렉토리 내의 모든 파일에 대해 반복되어, 여러 파일에서 'weekly''monthly'로 효율적으로 대체합니다.

지정된 디렉토리 및 하위 디렉토리의 파일에서 문자열을 대체하기 위해 -Recurse 매개변을 사용할 수도 있습니다.

Get-ChildItem 'C:\New\*.txt' -Recurse | foreach {
     (Get-Content $_) | foreach { $_ -Replace 'weekly', 'monthly' } | Set-Content $_
}

이 코드에서는 Get-ChildItem을 사용하여 'C:\New' 및 그 하위 디렉토리 내의 '.txt' 파일 목록을 조합합니다. -Recurse 옵션은 지정된 디렉토리뿐만 아니라 하위 디렉토리에서도 이러한 파일을 검색하도록 합니다.

그런 다음 두 개의 ForEach 루프를 사용하여 각 파일의 내용을 접근합니다. 내부 루프에서는 -Replace 연산자를 사용하여 텍스트 내에서 'weekly''monthly'로 대체합니다.

마지막으로 조정된 내용을 동일한 파일에 다시 저장합니다. 이 과정은 'C:\New' 및 그 하위 폴더에 있는 모든 파일을 통과하여 여러 파일과 중첩된 디렉토리에서 'weekly''monthly'로 효과적으로 대체할 수 있도록 합니다.

결론

이 기사에서는 Get-ContentSet-Content cmdlet을 사용하여 단일 파일의 문자열을 대체하는 여러 방법을 살펴보았으며, 기본적인 방법과 보다 효율적인 -Raw 매개변 방법을 제공했습니다. 이어서 파일 내에서 텍스트를 대체하기 위해 File 클래스의 강력함을 활용하여 보다 고급 기술을 시연했습니다.

또한, 디렉토리 및 그 하위 디렉토리 내 여러 파일에서 텍스트를 교체하여 지식을 확장했습니다. 이러한 방법들은 사람들로 하여금 파일 내 텍스트를 쉽게 편집할 수 있게 해주며, PowerShell이 이러한 작업에 얼마나 유용할 수 있는지를 보여줍니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - PowerShell String