电源外壳 ||大文件中的拍子匹配和打印附近的行



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

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 ---

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

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

如果问题不清楚,请告诉我,这个问题的合适标题是什么。

提前感谢!

$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*"}

最新更新