Powershell || Patttern在大文件中匹配并打印附近的行

时间:2018-05-31 05:45:48

标签: regex powershell scripting

我有一个非常大的文件,例如包含示例数据。

blah
---BLOCK SEPERATOR ---
blah
blah
there can be variable
number
of blah
MATCHING PATTERN
again
varying
number of
blah
---BLOCK SEPERATOR ---
blah
variable
blah
again
---BLOCK SEPERATOR ---

现在,我想提取仅包含MATCHING PATTERN的块。 由于文件非常大,我在其他问题中建议使用readcount 500。另外我想打印附近的行,所以我使用了select-string -pattern <Pattern> -context 100,100。 但他们两个都没有合作,即使他们在那里工作我也不确定在100行中会捕获多少块分隔符,所以我会采取 找到行并在它们上使用正则表达式来获取确切的块。 现在我无法使用正则表达式,因为文件非常大,读取整个文件需要很长时间。

我理想的是匹配模式然后提取线直到两侧的块分隔符。请注意文件非常大,readcount可以工作,但它不能与选择字符串一起使用。

如果问题不明确,请告诉我这个问题的合适标题。

提前致谢!

1 个答案:

答案 0 :(得分:2)

$rawData = @"
blah
---BLOCK SEPERATOR ---
blah
blah
there can be variable
number
of blah
MATCHING PATTERN
again
varying
number of
blah
---BLOCK SEPERATOR ---
blah
variable
blah
again
---BLOCK SEPERATOR ---
"@

$rawData -split "---BLOCK SEPERATOR ---" | Where-Object {$_ -like "*MATCHING PATTERN*"}