Powershell搜索到特定关键字

时间:2016-08-17 10:12:10

标签: regex powershell search

我正在尝试搜索和提取以特定关键字开头的句子,以及在/开头/结尾之间存在的关键字。目的是提取以'ALTER TABLE'开头的句子,这些句子要么嵌套在'GO'关键字之间,要么在它的开始或结束块上有GO。 GO关键字之间存在的句子数可以是任意的。这是我的示例文件和为实现它而编写的代码。

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的内容,直到GO。如果避免插入符号正则表达式(^),则打印“ALTER TABLE”的所有实例(其中还将包括句子'PROCEDURE ALTER TABLE'直到下一个GO)。只需要以'ALTER TABLE'开头的句子。

1 个答案:

答案 0 :(得分:2)

您只需要多线修改器:

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

将使^匹配行的开头,而不是整个字符串。

enter image description here