문자열 및 파일에서 텍스트를 찾습니다.

구문

Select-String [-Path] <string[]> [-Pattern] <string[]> [-AllMatches] [-CaseSensitive] [-Context <Int32[]>] [-Encoding <string>] [-Exclude <string[]>] [-Include <string[]>] [-List] [-NotMatch] [-Quiet] [-SimpleMatch] [<CommonParameters>]

Select-String -InputObject <psobject> [-Pattern] <string[]> [-AllMatches] [-CaseSensitive] [-Context <Int32[]>] [-Encoding <string>] [-Exclude <string[]>] [-Include <string[]>] [-List] [-NotMatch] [-Quiet] [-SimpleMatch] [<CommonParameters>]

설명

Select-String cmdlet은 입력 문자열 및 파일에서 텍스트 및 텍스트 패턴을 검색합니다. 이 cmdlet을 UNIX의 Grep 및 Windows의 Findstr처럼 사용할 수 있습니다.

Select-String은 텍스트 줄을 기준으로 합니다. 기본적으로 Select-String은 각 줄에서 처음으로 일치하는 항목을 찾아서 각 일치 항목에 대해 파일 이름, 줄 번호 및 해당 항목을 포함하는 줄의 모든 텍스트를 표시합니다.

하지만 줄별로 여러 개의 일치 항목을 검색하거나, 일치 항목 앞뒤 텍스트를 표시하거나, 일치하는 항목이 있는지 여부를 나타내는 부울 값(true 또는 false)만 표시하도록 지시할 수 있습니다.

Select-String은 정규식 일치를 사용하지만 지정한 텍스트를 입력에서 검색하는 단순 일치도 수행할 수 있습니다.

Select-String은 각 입력 파일에서 일치하는 텍스트를 모두 표시할 수도 있고 처음 일치하는 항목이 발견된 후 중지할 수도 있습니다. 지정된 패턴과 일치하지 않는 모든 텍스트를 표시할 수도 있습니다.

유니코드 텍스트 파일을 검색하는 경우와 같이 Select-String이 특정 문자 인코딩을 사용하도록 지정할 수도 있습니다.

매개 변수

-AllMatches

각 텍스트 줄에서 일치 항목을 여러 개 검색합니다. 이 매개 변수가 없는 경우 Select-String은 각 텍스트 줄에서 처음으로 일치하는 항목만 찾습니다.

Select-String이 한 텍스트 줄에서 일치하는 항목을 여러 개 찾은 경우에도 해당 줄에 대해 하나의 MatchInfo 개체만 전송하지만 개체의 Matches 속성에는 일치 항목이 모두 포함됩니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-CaseSensitive

대/소문자를 구분하여 일치하는 항목을 찾도록 합니다. 기본적으로 일치는 대/소문자를 구분하지 않습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Context <Int32[]>

일치하는 항목이 있는 줄 앞뒤로 지정된 개수의 줄을 캡처합니다. 이렇게 하면 일치 항목을 컨텍스트에서 볼 수 있습니다.

이 매개 변수의 값으로 하나의 숫자를 입력하면 해당 숫자가 일치하는 항목이 있는 줄 앞뒤로 캡처할 줄 수를 결정합니다. 값으로 숫자를 두 개 입력하면 첫 번째 숫자는 일치 항목 앞의 줄 수를 결정하고 두 번째 숫자는 일치 항목 뒤의 줄 수를 결정합니다.

기본 표시에서 일치하는 항목이 있는 줄에는 표시의 첫 번째 열에 오른쪽 꺾쇠 괄호(ASCII 62)가 표시됩니다. 표시되지 않은 줄은 컨텍스트입니다.

이 매개 변수는 Select-String에서 생성한 개체 수를 변경하지 않습니다. Select-String은 일치하는 항목마다 하나의 MatchInfo(Microsoft.PowerShell.Commands.MatchInfo) 개체를 생성합니다. 컨텍스트는 개체의 Context 속성에 문자열 배열로 저장됩니다.

Select-String 명령의 출력을 다른 Select-String 명령으로 파이프하면 받는 명령은 일치하는 줄(MatchInfo 개체의 Line 속성 값)의 텍스트만 검색하고 컨텍스트 줄의 텍스트는 검색하지 않습니다. 따라서 받는 Select-String 명령에서는 Context 매개 변수가 유효하지 않습니다.

컨텍스트에 일치 항목이 포함된 경우 각 일치 항목에 대한 MatchInfo 개체에 모든 컨텍스트 줄이 포함되지만 중복된 줄은 한 번만 표시됩니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Encoding <string>

Select-String이 파일을 검색할 때 가정해야 하는 문자 인코딩을 지정합니다. 기본값은 UTF8입니다.

유효한 값은 "UTF7", "UTF8", "UTF32", "ASCII", "Unicode", "BigEndianUnicode", "Default", "OEM"입니다. "Default"는 시스템의 현재 ANSI 코드 페이지의 인코딩입니다. "OEM"은 운영 체제의 현재 OEM 코드 페이지 식별자입니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Exclude <string[]>

지정된 항목을 제외합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: "*.txt")을 입력하십시오. 와일드카드를 사용할 수 있습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Include <string[]>

지정된 항목만 포함합니다. 이 매개 변수의 값은 Path 매개 변수를 한정합니다. 경로 요소 또는 패턴(예: "*.txt")을 입력하십시오. 와일드카드를 사용할 수 있습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-InputObject <psobject>

검색할 텍스트를 지정합니다. 텍스트가 포함된 변수를 입력하거나 텍스트를 가져오는 명령 또는 식을 입력하십시오.

필수 여부

true

위치

named

기본값

파이프라인 입력 적용 여부

true (ByValue)

와일드카드 문자 적용 여부

false

-List

각 입력 파일에서 첫 번째로 일치하는 항목만 반환합니다. 기본적으로 Select-String은 발견된 각 일치 항목에 대해 MatchInfo 개체를 반환합니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-NotMatch

지정된 패턴과 일치하지 않는 텍스트를 찾습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Path <string[]>

검색할 파일의 경로를 지정합니다. 와일드카드를 사용할 수 있습니다. 기본 위치는 로컬 디렉터리입니다.

"log1.txt", "*.doc" 또는 "*.*"와 같이 디렉터리의 파일을 지정합니다. 디렉터리만 지정하면 명령이 실패합니다.

필수 여부

true

위치

2

기본값

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-Pattern <string[]>

찾을 텍스트를 지정합니다. 문자열 또는 정규식을 입력하십시오. 문자열을 입력하는 경우 SimpleMatch 매개 변수를 사용합니다.

정규식에 대한 자세한 내용을 보려면 about_Regular_Expressions를 참조하십시오.

필수 여부

true

위치

1

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Quiet

MatchInfo 개체 대신 부울 값(true 또는 false)을 반환합니다. 패턴이 발견되면 값이 "true"이고, 그렇지 않으면 false입니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-SimpleMatch

정규식 일치 대신 단순 일치를 사용합니다. 단순 일치의 경우 Select-String은 입력에서 Pattern 매개 변수의 텍스트를 검색합니다. 단순 일치에서는 Pattern 매개 변수의 값을 정규식 문으로 해석하지 않습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

<CommonParameters>

이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_Commonparameters.

입력 및 출력

입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.

입력

System.Management.Automation.PSObject

ToString 메서드가 있는 개체를 Select-String으로 파이프할 수 있습니다.

출력

Microsoft.PowerShell.Commands.MatchInfo 또는 System.Boolean

기본적으로 출력은 검색된 일치 항목당 하나에 해당하는 MatchInfo 개체 집합입니다. Quiet 매개 변수를 사용하는 경우 출력은 패턴이 발견되었는지 여부를 나타내는 부울 값입니다.

참고

Select-String은 UNIX의 Grep 명령 및 Windows의 FindStr 명령과 비슷합니다.

Select-String을 사용하려면 Pattern 매개 변수의 값으로 찾을 텍스트를 입력합니다.

검색할 텍스트를 지정하려면 다음을 수행합니다.

-- 텍스트를 입력하고 따옴표로 묶어 Select-String으로 파이프합니다.

-- 텍스트 문자열을 변수에 저장한 다음 이 변수를 InputObject 매개 변수의 값으로 지정합니다.

-- 텍스트가 파일에 저장되면 Path 매개 변수를 사용하여 파일 경로를 지정합니다.

기본적으로 Select-String은 Pattern 매개 변수의 값을 정규식으로 해석합니다. 자세한 내용은 about_Regular_Expressions를 참조하십시오. 하지만 SimpleMatch 매개 변수를 사용하여 정규식 일치를 재정의할 수 있습니다. SimpleMatch 매개 변수는 입력에서 Pattern 매개 변수 값의 인스턴스를 찾습니다.

Select-String의 기본 출력은 일치에 대한 세부 정보를 포함하는 MatchInfo 개체입니다. MatchInfo 개체에는 Filename 및 Line 등의 속성이 있으므로 이 개체의 정보는 파일에서 텍스트를 검색할 때 유용합니다. 입력이 파일이 아닌 경우 이 매개 변수의 값은 "InputStream"입니다.

MatchInfo 개체의 정보가 필요하지 않은 경우 MatchInfo 개체 대신 일치하는 항목이 있는지를 나타내는 부울 값(true 또는 false)을 반환하는 Quiet 매개 변수를 사용합니다.

구가 일치하는 경우 Select-String은 시스템에 대해 설정된 현재 culture를 사용합니다. 현재 culture를 찾으려면 Get-Culture cmdlet을 사용합니다.

MatchInfo 개체의 속성을 찾으려면 다음을 입력하십시오.

select-string -path test.txt -pattern "test" | Get-Member | Format-List -property *

예 1

C:\PS>"Hello","HELLO" | select-string -pattern "HELLO" -casesensitive

설명
-----------
이 명령은 Select-String 명령으로 파이프된 텍스트에 대해 대/소문자를 구분하는 일치 작업을 수행합니다. 

따라서 "Hello"는 일치하지 않으므로 Select-String은 "HELLO"만 찾습니다.

따옴표로 묶인 각 문자열은 한 줄로 간주되므로 CaseSensitive 매개 변수가 없으면 Select-String은 두 문자열 모두를 일치하는 항목으로 인식합니다.






예 2

C:\PS>select-string -path *.xml -pattern "the the"

설명
-----------
이 명령은 현재 디렉터리에서 파일 이름 확장명이 .xml인 모든 파일을 검색하고 해당 파일에서 "the the" 문자열이 포함된 줄을 표시합니다.






예 3

C:\PS>select-string -path $pshome\en-US\*.txt -pattern "@"

설명
-----------
이 명령은 Windows PowerShell 개념 도움말 파일(about_*.txt)에서 @ 기호 사용에 대한 정보를 검색합니다. 

경로를 나타내기 위해 이 명령은 Windows PowerShell 설치 디렉터리 경로를 저장하는 $pshome 자동 변수의 값을 사용합니다. 이 예에서는 Windows PowerShell에 대한 영어(미국) 언어 도움말 파일이 포함된 en-US 하위 디렉터리를 검색합니다.






예 4

C:\PS>function search-help
{
    $pshelp = "$pshome\es\about_*.txt", "$pshome\en-US\*dll-help.xml"
    select-string -path $pshelp -pattern $args[0]
}

설명
-----------
이 간단한 함수에서는 Select-String cmdlet을 사용하여 Windows PowerShell 도움말 파일에서 특정 문자열을 검색합니다. 이 예에서는 "en-US" 하위 디렉터리에서 영어-미국 언어 파일을 검색합니다.

이 함수를 사용하여 "psdrive"와 같은 문자열을 찾으려면 "search-help psdrive"를 입력합니다.

Windows PowerShell 콘솔에서 이 함수를 사용하려면 시스템의 Windows PowerShell 도움말 파일을 가리키도록 경로를 변경한 다음 함수를 Windows PowerShell 프로필에 붙여 넣습니다.






예 5

C:\PS>$events = get-eventlog -logname application -newest 100

C:\PS> $events | select-string -inputobject {$_.message} -pattern "failed"

설명
-----------
이 예에서는 이벤트 뷰어 응용 프로그램 로그의 최신 이벤트 100개에서 문자열 "failed"를 검색합니다.

첫 번째 명령은 Get-EventLog cmdlet을 사용하여 응용 프로그램 이벤트 로그에서 최신 이벤트 100개를 가져와 $events 변수에 저장합니다. 

두 번째 명령은 파이프라인 연산자(|)를 사용하여 $events 변수의 개체를 Select-String으로 보냅니다. 이 명령은 InputObject 매개 변수를 사용하여 $events 변수의 입력을 나타냅니다. InputObject 매개 변수의 값은 파이프라인을 통과하는 각 개체의 Message 속성입니다. 현재 개체는 $_ 기호로 표시됩니다.

각 이벤트가 파이프라인에 도착하면 Select-String은 해당 Message 속성 값에서 "failed" 문자열을 검색한 다음 일치하는 항목이 포함된 모든 줄을 표시합니다.






예 6

C:\PS>get-childitem c:\windows\system32\* -include *.txt -recurse |
select-string -pattern "Microsoft" -casesensitive

설명
-----------
이 명령은 C:\Windows\System32의 하위 디렉터리에서 파일 이름 확장명이 .txt인 모든 파일을 검토하여 "Microsoft"라는 문자열을 검색합니다. CaseSensitive 매개 변수는 Select-String이 일치하는 항목을 찾으려면 "Microsoft"의 "M"이 대문자이고 나머지 문자는 소문자여야 함을 나타냅니다.






예 7

C:\PS>select-string -path process.txt -pattern idle, svchost -notmatch

설명
-----------
이 명령은 Process.txt 파일에서 "idle" 또는 "svchost"라는 단어가 포함되지 않은 텍스트 줄을 찾습니다.






예 8

C:\PS>$f = select-string -path audit.log -pattern "logon failed" -context 2, 3

C:\PS> $f.count

C:\PS> ($f)[0].context | format-list

설명
-----------
첫 번째 명령은 Audit.Log 파일에서 "logon failed"라는 구를 검색합니다. 이 명령은 Context 매개 변수를 사용하여 일치 항목 앞의 2줄과 뒤의 3줄을 캡처합니다. 

두 번째 명령은 개체 배열의 Count 속성을 사용하여 찾은 일치의 수(이 경우 2)를 표시합니다. 

세 번째 명령은 첫 번째 MatchInfo 개체의 Context 속성에 저장된 줄을 표시합니다. 이 명령은 배열 표기법을 사용하여 첫 번째 일치(0부터 시작하는 배열에서 0과 일치)를 나타내고 Format-List cmdlet을 사용하여 Context 속성의 값을 목록으로 표시합니다.

출력은 각각 검색된 일치 항목에 해당하는 두 개의 MatchInfo 개체로 구성됩니다. 컨텍스트 줄은 MatchInfo 개체의 Context 속성에 저장됩니다.






예 9

C:\PS>$a = get-childitem $pshome\en-us\about*.help.txt | select-string -pattern transcript


C:\PS> $b = get-childitem $pshome\en-us\about*.help.txt | select-string -pattern transcript -allmatches

C:\PS> $a
C:\Windows\system32\WindowsPowerShell\v1.0\en-us\about_Pssnapins.help.txt:39:       Start-Transcript and Stop-Transcript.

C:\PS> $b
C:\Windows\system32\WindowsPowerShell\v1.0\en-us\about_Pssnapins.help.txt:39:       Start-Transcript and Stop-Transcript.


C:\PS>> $a.matches
Groups   : {Transcript}
Success  : True
Captures : {Transcript}
Index    : 13
Length   : 10
Value    : Transcript


C:\PS> $b.matches
Groups   : {Transcript}
Success  : True
Captures : {Transcript}
Index    : 13
Length   : 10
Value    : Transcript

Groups   : {Transcript}
Success  : True
Captures : {Transcript}
Index    : 33
Length   : 10
Value    : Transcript

설명
-----------
이 예에서는 Select-String의 AllMatches 매개 변수의 효과를 보여 줍니다. AllMatches는 각 줄에서 패턴이 일치하는 첫 번째 항목만 찾는 것이 아니라 모든 항목을 찾습니다.

예의 첫 번째 명령은 Windows PowerShell 개념 도움말 파일("about" 도움말)에서 "transcript"라는 단어를 찾습니다. 두 번째 명령은 AllMatches 매개 변수를 사용하는 점을 제외하면 첫 번째 명령과 동일합니다.

첫 번째 명령의 출력은 $a 변수에 저장됩니다. 두 번째 명령의 출력은 $b 변수에 저장됩니다. 

변수 값을 표시하면 기본 표시는 예의 출력에서 보듯이 동일합니다.

하지만 다섯 번째 및 여섯 번째 명령은 각 개체의 Matches 속성 값을 표시합니다. 첫 번째 명령의 Matches 속성에는 일치하는 항목 한 개(즉 System.Text.RegularExpressions.Match 개체 한 개)만 포함되어 있는 반면 두 번째 명령의 Matches 속성에는 해당 줄에서 일치하는 항목 두 개가 모두 포함되어 있습니다.






참고 항목




목차