我有一个非常大的文件,例如包含示例数据。
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
可以工作,但它不能与选择字符串一起使用。
如果问题不明确,请告诉我这个问题的合适标题。
提前致谢!
答案 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*"}