2014-09-24 2 views
0

현재 powershell에서 여러 조건을 찾는 데 문제가 있습니다. 텍스트 파일을 쿼리하고 특정 변수뿐만 아니라 특정 이름을 찾고 있습니다. 텍스트 파일을 통해 위에서 아래로 접근하려고 노력하고 있습니다.Powershell 다중 검색/조건 쿼리

Name1: 
Nonsense 
VariableA 
VariableB 
Nonsense 
VariableC == 

Name2: 
VariableA 
Nonsense 
VariableB == 
VariableC 

처음 NAME2을 찾기 위해 쿼리를 실행하려고하고 "변수"및 "=="연산자의 양쪽 모두를 포함한 다음의 행을 찾을 수 있어요 :

텍스트 파일은 다음과 같이 보입니다 . 그러나, 나는이 조건으로 어디에서 시작해야할지 모른다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 나는 그것을 감사 할 것입니다.

감사합니다. 이 같은

답변

1

뭔가 작업을해야합니다 :

PS C:\>$txt = Get-Content 'C:\path\to\your.txt' | Out-String 
PS C:\>$txt 
Name1: 
Nonsense 
VariableA 
VariableB 
Nonsense 
VariableC == 

Name2: 
VariableA 
Nonsense 
VariableB == 
VariableC 
PS C:\>$txt -match 'Name2[\s\S]*?(Variable.*?==)' 
True 
PS C:\>$matches[1] 
VariableB ==

Variable.*?==는 "=="어딘가에서 같은 줄에 (식이 .*? 줄 바꿈을 제외한 모든 항목과 일치) 다음에 "변수"라는 단어와 일치합니다. 앞의 표현식 [\s\S]*? (줄 바꿈을 포함하여 모든 문자의 가장 짧은 일치)은 "Name2"단어 다음에 "Version"단어가 다음에 나오는 것과 일치하는지 확인합니다.

+0

Ansgar와 같은 매력을 발휘했습니다. 고맙습니다 :) – icehac