|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Распределить значения Select-String по разным переменным. |
|
PowerShell - Распределить значения Select-String по разным переменным.
|
Старожил Сообщения: 226 |
Добрый день всем!
Возник вроде бы и банальный вопрос, но не могу придумать как это сделать, точнее знаний не хватает... При парсинге, да и не только, бывает необходимость значения, вытащенные с помощью Select-String, взять в разные переменные. К примеру такой блок кода: Подскажите, пожалуйста, как значения 1 и 2 определить в разные переменные ? |
|
Отправлено: 13:41, 28-11-2019 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось DJ Mogarych, 28-11-2019 в 14:07. Отправлено: 13:58, 28-11-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 226
|
Профиль | Отправить PM | Цитировать DJ Mogarych, примеры то разные могут быть. В переменной $b в данном коде:
в продолжении кода эти два значения нужно использовать в разных командах. Вот и хотелось бы взять их в разные переменные. Пока что выкрутился с помощью рег. выражений: $t = $b | Foreach {$_ -replace "(.*)`n(.*)","`$1"} $r = $b | Foreach {$_ -replace "(.*)`n(.*)","`$2"} Файл для примера прикрепил. |
Отправлено: 14:11, 28-11-2019 | #3 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 14:25, 28-11-2019 | #4 |
Старожил Сообщения: 226
|
Профиль | Отправить PM | Цитировать DJ Mogarych, спасибо большое.
К сожалению так не получится. По строкам: я сразу пробовал, но в переменные берутся не строки, а первые символы строк. А, если применять where, то нужно вывод сохранять во временный файл, что не очень удобно, их в коде и так уже 2. Можно наверное весь код переделать с Where-Object вместо Select-String, но что-то с ним у меня не получалось взять два нужных значения. Таким кодом: получилось отлично DJ Mogarych, ещё раз большое спасибо за подсказку. |
|
Отправлено: 14:59, 28-11-2019 | #5 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Uragan66, да, я ошибся - хотел написать во втором примере $b.where, но забыл убрать gc из копипасты.
Впрочем, вы и сами прекрасно догадались. |
------- Отправлено: 16:41, 28-11-2019 | #6 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать В регулярке группе можно дать имя группе захвата: "(?<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' $a = gc -Raw ./123.txt $b = if (($a | Out-String) -match $reg ) { $Matches.Remove(0) New-Object psobject -Property $Matches $Matches.Clear() } ; $b |
Отправлено: 10:50, 05-12-2019 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - [решено] Select-String $? всегда True | Elven | Скриптовые языки администрирования Windows | 1 | 09-04-2018 16:33 | |
PowerShell - [решено] выбрать после select только определенные значения поля | nokogerra | Скриптовые языки администрирования Windows | 3 | 22-12-2016 09:39 | |
CMD/BAT - [решено] Присвоить переменным значения имен файлов в папке | kopbetby | Скриптовые языки администрирования Windows | 5 | 10-10-2016 14:26 | |
Apache: доступ к разным папкам по разным портам | RazdoR | Вебмастеру | 1 | 20-09-2013 14:38 | |
PowerShell - [блог] Регулярные выражения – Select-String | Xaegr | Скриптовые языки администрирования Windows | 0 | 28-12-2009 18:30 |
|