![]() |
Распределить значения Select-String по разным переменным.
Добрый день всем!
Возник вроде бы и банальный вопрос, но не могу придумать как это сделать, точнее знаний не хватает... При парсинге, да и не только, бывает необходимость значения, вытащенные с помощью Select-String, взять в разные переменные. К примеру такой блок кода: Код:
$b = ($a | Select-String -Pattern '[\S\s]*<title>([^"]+)</title>[\S\s]*var filmSource.*"/([^"]+txt)"[\S\s]*' -AllMatches).Matches| |
Вот бы получить примерный файл того, что вы парсите, а также что именно нужно из этого файла.
В общем случае, вместо select-string лучше использовать where: Код:
$g,$notg = (gc c:\temp\123.txt).where({$_ -match 'g'},'Split') |
Вложений: 1
DJ Mogarych, примеры то разные могут быть. В переменной $b в данном коде:
Код:
Сверхъестественное (15 сезон) Пока что выкрутился с помощью рег. выражений: Код:
$t = $b | Foreach {$_ -replace "(.*)`n(.*)","`$1"} Файл для примера прикрепил. |
Ну, если в переменной всего 2 строки, то можно вообще просто:
Код:
$t = $b[0] Код:
$t,$r = (gc c:\temp\123.txt).where({$_ -notmatch '/'},'Split') |
DJ Mogarych, спасибо большое.
К сожалению так не получится. По строкам: Код:
$t = $b[0] А, если применять where, то нужно вывод сохранять во временный файл, что не очень удобно, их в коде и так уже 2. Можно наверное весь код переделать с Where-Object вместо Select-String, но что-то с ним у меня не получалось взять два нужных значения. Таким кодом: Код:
$t,$r = $k.where({$_ -notmatch '/'},'Split') DJ Mogarych, ещё раз большое спасибо за подсказку. |
Uragan66, да, я ошибся - хотел написать во втором примере $b.where, но забыл убрать gc из копипасты.
Впрочем, вы и сами прекрасно догадались. |
В регулярке группе можно дать имя группе захвата: "(?<name>text)", а потом создать объект с такими же именами.
powershell: Код:
$reg = New-Object System.Text.RegularExpressions.Regex '[\S\s]*<title>(?<Title>[^"]+)</title>[\S\s]*var filmSource.*"/(?<FilmSource>[^"]+txt)"[\S\s]*', 'Multiline,IgnoreCase' Код:
Title FilmSource |
Время: 10:16. |
Время: 10:16.
© OSzone.net 2001-