Я пытаюсь найти и извлечь предложения, которые начинаются с определенного ключевого слова и которые существуют между/начинается/заканчивается ключевым словом. Цель состоит в том, чтобы извлечь предложения, начинающиеся с «ALTER TABLE», которые либо вложены между ключевым словом «GO», либо имеют GO на начальном или конечном блоке. Количество предложений, существующих между ключевыми словами GO, может быть произвольным. Вот мой образец файла и код, который был написан для его достижения.Поиск Powershell до определенного ключевого слова
Содержание SampleFile.sql
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, пока ГО. Если исключить регулярное выражение каретки (^), тогда будут напечатаны все экземпляры «ALTER TABLE» (который также будет включать предложение «ПРОЦЕДУРА ALTER TABLE» до следующего GO). Требуются только предложения, начинающиеся с «ALTER TABLE».
Спасибо, это сработало –