У меня есть приведенный ниже код, который делает то, что мне нужно, но он медленный, мне интересно, есть ли более быстрые альтернативы, которые могли бы сделать то же самое.
$array2= ('italy', 'mexico', 'australia')
$pattern = '(?:total residents\s: )\W(\d+)\W'
$array = $array2 | ForEach-Object {
$array3 = Get-ChildItem -Path $path -Recurse | Select-string -Pattern $_ -SimpleMatch -Context 9, 0 | ForEach-Object {
$_.Context.PreContext
$_.Line
$_.Context.PostContext
}
$array3 | Select-String -Pattern $pattern | ForEach-Object { $_.Matches.Groups[1].Value }
}
$ array2 может иметь элементы до 10, это только пример с 3.
файл содержит данные в следующем формате. Точки представляют другую информацию, мне не нужно, это только то, как ее часть выглядит так, что линия страны на 9 строк ниже общего количества жителей.
всего жителей: (15899630)
.
.
.
.
.
.
.
.
страна: Италия
================================================= ===========
Вывод вышеуказанного скрипта:
15899630
2442110
1500000