티스토리 뷰

Window OS의 Powershell 에서 Unix 의 grep 명령어와 같은 기능을 수행하는 명령어

Linux / Unix 의 Terminal 경우 ls | grep "hello" 와 같이 입력시 "hello" 을 포함한 결과 리스트를 확인 할 수 있다.

Window OS의 Powershell 에서는 아래와 같이 사용 가능하다. 

ls | select-string -pattern hello

 


1) 앞의 명령 수행 결과의 특정 패턴 잡아 내기

PS C:\> get-process | select-string -pattern WS

System.Diagnostics.Process (WSAgent)
System.Diagnostics.Process (WSPMonitor)

 

2) 파일안에서 특정한 패턴 잡아 내기

PS C:\> select-string -path process.txt -pattern WS

process.txt:2:Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName

process.txt:73:     95      36     1552       3240    41     5.48   2720 WSAgent

process.txt:74:     85       5     3320       4508    43     3.88   2832 WSPMonitor

 

3) application 이벤트 로그  중 최신 100개를 변수로 저장, -inputobject 를 이용하여 get-eventlog 의 내용중 message 중에  failed 값만 가져오기

PS> $event = get-eventlog -logname application -newest 100

PS> $event | select-string -inputobject {$_.message} -pattern "failed"

'paSvc' 소스의 Event ID '1073741824'에 대한 설명을 찾을 수 없습니다. 로컬 컴퓨터에 메시지를 표시하기 위한 메시지 DLL 파일이나 필요한 레지스트리 정보가 없거나 여기에 액세스할 수 있는 사용 권한이 없 일부입니다.'failed to GetDWValue( Flag ) 997'

 

Get-EventLog:  로컬 이벤트 로그 또는 해당 이벤트 로그에 저장된 항목에 대한 정보를 가져옵니다.

-inputObject <psobject>  개체를 cmdlet에 대한 입력으로 허용합니다. 개체가 포함된 변수를 입력하거나 개체를 가져오는 명령 또는 식을 입력하십시오.

 

4)  특정 경로 하위 디렉터리에서 파일 확장명이 .txt인 모든 파일을 "Microsoft"라는 문자열로 검사

CaseSensitive 매개 변수는 일치가 발생하려면 'Microsoft'의 'M'을 대문자로 표시하고 나머지 문자는 소문자로 표시.

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

C:\windows\system32\drivers\gmreadme.txt:3:Copyright (c) 1998-2000 Microsoft Corporation.  All Rights Reserved.
C:\windows\system32\drivers\gmreadme.txt:8:Roland GS Sound Set/Microsoft (P) 1996 Roland Corporation U.S.
C:\windows\system32\drivers\gmreadme.txt:9:The Roland SoundCanvas Sound Set is licensed under Microsoft's
C:\windows\system32\drivers\gmreadme.txt:10:End User License Agreement for use with Microsoft operating

 

-recurse 하위폴더까지 모두를 볼수 있는 옵션

 

* 매개변수

 -pattern <string[]>
     일치 조건을 나타내는 문자열이나 정규식을 지정합니다. Windows PowerShell에서 정규식에 대한 자세한 내용을 보려면 Windows PowerShell 명령 프롬프트에 "get-help about_regular_expression"을 입력하십시오.

 -path <string[]>
     일치시킬 문자열이나 파일을 지정합니다. 와일드카드 구문을 사용할 수 있습니다.

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

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

 -simpleMatch <SwitchParameter>
     정규식 일치 대신 단순 일치를 사용하도록 지정합니다.

 -caseSensitive <SwitchParameter>
     일치가 대/소문자를 구분하도록 합니다. 기본적으로 일치는 대/소문자를 구분하지 않습니다.

 -quiet <SwitchParameter>
     cmdlet으로 만들어진 대부분의 출력을 무시합니다. 그렇게 지정하면 부울 값만 파이프라인을 통해 전달됩니다. 일치가 발견되면 값이 true이고 그렇지 않으면 false입니다.

 -list <SwitchParameter>
     각 입력 파일에 대해 하나의 결과만 나타나도록 지정합니다. 반환된 MatchInfo 개체에는 첫 번째 일치에 대한 정보만 포함됩니다.

 -inputObject <psobject>
     개체를 cmdlet에 대한 입력으로 허용합니다. 개체가 포함된 변수를 입력하거나 개체를 가져오는 명령 또는 식을 입력하십시오.

 -text <string[]>
     Pattern 매개 변수의 문자열이나 정규식고 일치시킬 리터럴 텍스트를 지정합니다.

 

 

 

댓글

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음



Total
Today
Yesterday
최근에 달린 댓글