PowerShell을 사용하여 파일에 특정 문자열이 포함되어 있는지 확인하는 방법

  1. PowerShell에서 Select-String을 사용하여 파일이 특정 문자열을 포함하는지 확인하기
  2. PowerShell에서 Get-Content를 사용하여 파일이 특정 문자열을 포함하는지 확인하기
  3. 특정 문자열을 포함하는 여러 파일 확인하기
  4. 결론
PowerShell을 사용하여 파일에 특정 문자열이 포함되어 있는지 확인하는 방법

특정 문자열을 텍스트 파일 내에서 검색하는 것은 Windows PowerShell 작업 시 일반적인 작업입니다. Unix와 Linux 환경에서는 믿을 수 있는 grep 명령을 사용하는 반면, PowerShell은 Select-String, Get-ContentGet-ChildItem cmdlet을 사용하여 대안적인 접근 방식을 제공합니다.

이 기사에서는 PowerShell을 사용하여 텍스트 파일에서 문자열을 찾는 다양한 방법을 탐구할 것입니다.

PowerShell에서 Select-String을 사용하여 파일이 특정 문자열을 포함하는지 확인하기

우리 기계에 Demo.txt 파일이 있다고 가정하고, 그 안에서 문자열 Demonstration을 찾고 싶습니다.

다음은 이를 수행하는 PowerShell 스크립트입니다:

Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern 'Demonstration'

이 스크립트에서는 Select-String을 사용하여 -Path 매개변수로 파일의 위치를 지정하고 -Pattern 매개변수로 우리가 찾고 있는 문자열을 지정합니다.

파일이 지정된 패턴('Demonstration')을 포함하고 있으면, 콘솔은 파일 이름, 줄 번호, 문자열이 포함된 줄을 출력합니다.

출력:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration

위의 출력은 전체 경로가 포함된 Demo.txt 파일과 우리의 문자열이 포함된 줄(줄 1) 및 문자열 자체(This is purely for demonstration)를 보여줍니다.

파일이 문자열을 포함하는지 여부만 알면 되는 경우에는 스크립트를 다음과 같이 수정할 수 있습니다:

$Knw = Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern "Demonstration"

if ($Knw -ne $null) {
    echo Contains String
}
else {
    echo Does not Contain String
}

이 스크립트에서 $Knw라는 변수를 정의하였으며, 이는 Select-String을 사용하여 지정된 경로에 있는 파일에서 검색된 문자열 "Demonstration"의 결과를 포함합니다. 그런 다음, 변수 $Knw$null이 아닌지 확인하여 파일에서 일치하는 항목이 발견되었음을 의미합니다.

일치하는 항목이 발견되면 "Contains String."을 출력하고, 발견되지 않으면 "Does not Contain String."을 출력합니다.

출력:

Contains String

파일이 "Demonstration" 패턴을 포함하고 있으므로, 출력은 Contains String이 표시됩니다.

PowerShell에서 Get-Content를 사용하여 파일이 특정 문자열을 포함하는지 확인하기

Get-Content는 지정된 경로의 파일 내용을 가져오고 파일 내용을 읽어 문자열 객체를 반환하는 cmdlet입니다. Demo.txt 파일에서 Get-Content를 사용하려면 아래의 스크립트를 사용할 것입니다:

Get-Content -Path C:\Users\pc\Demo\Demo.txt | Select-String -Pattern "Demonstration"

이 스크립트에서는 Get-Content를 사용하여 -Path 매개변수로 지정된 Demo.txt 파일의 내용을 읽고, 그 결과를 Select-String 명령으로 전달하여 -Pattern 매개변수를 사용하여 Demonstration 문자열을 찾습니다.

출력:

This purely for demonstration

문자열의 존재 여부만 확인하고 싶은 경우, 아래의 스크립트를 사용할 수 있습니다:

If (Get-Content C:\Users\pc\Demo\Demo.txt | % { $_ -match "Demonstration" }) {
    echo Contains String
}
else {
    echo Does not Contains String
}

이 스크립트에서는 Get-Content를 사용하여 C:\Users\pc\Demo\Demo.txt에 위치한 파일의 데이터를 읽고, 파이프라인(|)을 통해 파일의 각 줄을 하나씩 처리합니다. %{} 블록 내부에서는 -match 연산자를 사용하여 각 줄이 문자열 "Demonstration"을 포함하는지 확인합니다.

파일의 어느 한 줄이라도 "Demonstration"을 포함하고 있다면 "Contains String"을 출력하고, 포함되지 않으면 "Does not Contains String"을 출력합니다.

출력:

Contains String

파일이 지정된 문자열("Demonstration")을 포함하고 있으므로, 우리는 Contains String을 출력으로 받습니다.

특정 문자열을 포함하는 여러 파일 확인하기

50개 이상의 텍스트 파일이 있고, 그 모든 파일에서 문자열을 검색하려고 한다고 가정해 봅시다. 이를 수행하는 두 가지 방법에 대해 논의할 것입니다.

PowerShell에서 Get-ChildItemSearch-String 사용하기

우리는 Get-ChildItemSelect-String cmdlet을 사용할 수 있습니다. Get-ChildItem cmdlet은 검색 기준에 따라 하나 이상의 파일을 찾습니다.

예를 들어 보겠습니다. Demo 폴더에 50개 이상의 텍스트 파일이 있다고 가정하고, 이 스크립트를 사용하여 그 모든 파일에서 문자열 Demonstration을 검색할 수 있습니다:

Get-ChildItem -Path C:\Users\pc\Demo\ -Recurse | Select-String -Pattern 'Demonstration'

이 스크립트에서는 지정된 디렉터리(-Path)와 하위 디렉터리(-Recurse)에서 파일 목록을 나열하기 위해 Get-ChildItem을 사용합니다. 파이프 연산자(|)는 파일 목록을 Select-String cmdlet에 전달합니다.

마지막으로, 우리는 각 파일에서 특정 패턴인 'Demonstration'을 검색하기 위해 Select-String을 사용합니다.

콘솔은 문자열을 포함하고 있는 파일 이름, 줄 번호, 그리고 문자열이 포함된 줄을 출력합니다.

출력:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem

PowerShell에서 Select-String 사용하기

여러 파일에서 특정 문자열을 확인하기 위해 Select-String만 사용할 수도 있습니다.

Select-String -Path C:\Users\pc\Demo\*.txt -Pattern 'Demonstration'

이 스크립트에서는 -Path 매개변수에서 와일드카드(*)를 사용하여 Demo 폴더의 모든 텍스트 파일을 검색합니다. Select-String cmdlet은 모든 일치하는 파일에서 문자열을 검색합니다.

출력:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem

위와 동일하게, 콘솔은 문자열을 포함하고 있는 파일 이름, 줄 번호, 그리고 문자열이 포함된 줄을 출력합니다.

결론

Windows PowerShell은 텍스트 파일 내에서 문자열을 효율적으로 검색할 수 있는 도구 세트를 제공합니다. Select-String, Get-Content, 또는 Get-ChildItemSelect-String의 조합을 선호하는지 간에, 파일 내에서 데이터를 쉽게 찾아 조작할 수 있습니다.

이 cmdlet을 통해 필요한 정보를 찾는 데 아무런 문제가 없을 것이며, PowerShell에서 텍스트 파일 검색이 수월해질 것입니다.

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

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

관련 문장 - PowerShell String