2016-08-17 2 views
1

특정 키워드로 시작하고/starts/end 사이에 존재하는 문장을 검색하여 키워드로 검색하려고합니다. 의도는 'ALTER TABLE'으로 시작하는 문장을 추출하는 것이며, 'GO'키워드 사이에 중첩되거나 시작 또는 끝 블록으로 이동해야합니다. GO 키워드 사이에 존재하는 문장의 수는 임의적 일 수 있습니다. 다음은 샘플 파일과이를 구현하기 위해 작성된 코드입니다. 이 코드를 사용하여 SampleFile.sqlPowershell 특정 키워드까지 검색

ALTER TABLE [dbo].[test1]  
    ADD [country] VARCHAR (30) NULL; 
GO 
alter procedure 
    some procedure code 
GO 
ALTER TABLE 
    something; 
GO 
PROCEDURE ALTER TABLE; 
Drop table; 
GO 
ALTER TABLE [dbo].[test2]  
    ADD [continent] VARCHAR (30) NULL; 

내 코드

$path = 'D:\Script' 
$sampleFile = 'SampleFile.sql' 
$search = "ALTER TABLE" 
(GC $path\$sampleFile -Delimiter 'GO') -match "^$search*" 

내용, 나는 때까지 만 ALTER의 첫 번째 세트의 컨텐츠를 취득 할 수있어 GO. 캐럿 정규식을 피하면 (^), 'ALTER TABLE'의 모든 인스턴스가 인쇄됩니다 (다음 GO까지 'PROCEDURE ALTER TABLE'문장 포함). 'ALTER TABLE'으로 시작하는 문장 만 필요합니다.

(GC $path\$sampleFile -Delimiter 'GO') -match "(?m)^$search*" 
               ^^^ 

^ 일치하는 라인의 시작 부분이 아닌 전체 문자열을 만들 것입니다 :

답변

2

당신은 단지 여러 수정이 필요합니다.

enter image description here

+0

감사합니다. –

관련 문제