![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Select-String. Парсинг нескольких значений между наборами символов. |
|
PowerShell - Select-String. Парсинг нескольких значений между наборами символов.
|
Новый участник Сообщения: 35 |
Всем привет!
Уже второй день бьюсь с задачей: есть текстовый файл, из которого необходимо вывести на экран несколько слов/цифр, находящихся между определённым текстом. Кусок файла, пример
... !--PREVINFO_START-->Autodesk AutoCAD Electrical 2015<!--PREVINFO_END--></dfsdferwer 'word-break:break-all'>УH5S SV65 V9У1 WDL3 </td></tr>erwedfsdf td align=left id=2>21T81</td><td align=leftwerewrwer ... !--PREVINFO_START-->Autodesk AutoCAD 2018<!--PREVINFO_END--></dfsdferwer 'word-break:break-all'>YWP8 10NT JHGJ NJJZ </td></tr>erwedfsdf td align=left id=2>T2281</td><td align=leftwerewrwer Такого рода записей может быть несколько из-за нескольких установленных версий Автокада. После работы скрипта результат должен быть таким
Autodesk AutoCAD Electrical 2015 УH5S SV65 V9У1 WDL3 21T81 Autodesk AutoCAD 2018 YWP8 10NT JHGJ NJJZ T2281 Первую строку достаю командой: Но при этом парсится сразу две первые строчки названий программы. Но не могу понять, как задать сразу несколько условий в запросе выше, чтобы парсилось и название, и серийник, и код продукта. Можете подтолкнуть в правильном направлении? |
|
Отправлено: 18:44, 17-07-2020 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:10, 17-07-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать Цитата Fors1k:
Пример
<!--PREVINFO_START-->Autodesk AutoCAD Electrical 2015 </td> <td align=left id=1>&nbsp; <td align=left id=2>&nbsp; <td align=left id=1 width=15%>Серийный номер: <td align=left id=2> <!--PREVINFO_START-->421-64324142 </td> <td align=left id=1 width=15%>Ключ продукта: <td align=left id=2>21T81 <td align=left id=1>&nbsp; <td align=left id=2>&nbsp; <td align=left id=1 width=15%>РљРѕРґ запроса: Скажите, можно ли в той конструкции, которую вы написали, использовать несколько условий, т.е. обычными словами: Найти все вхождения в файле, располагающиеся между набором символов ("!--PREVINFO_START-->" и "]<!--PREVINFO_END--></") ИЛИ ("'word-break:break-all'>" и "</td></tr>erwedfsdf") ИЛИ ("td align=left id=2>" и "</td><td align=leftwerewrwer") ? |
|
Отправлено: 02:05, 18-07-2020 | #3 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 11:43, 18-07-2020 | #4 |
Deadooshka Сообщения: 2566
|
Профиль | Отправить PM | Цитировать Регулярное выражение на всю группу строк с подмасками. Выводим подмаски.
$regexp = "!--PREVINFO_START-->(.*?)<!--PREVINFO_END--></dfsdferwer 'word-break:break-all'>(.*?)</td></tr>erwedfsdf td align=left id=2>(.*?)</td>" Select-String $regexp -InputObject $content -AllMatches | % {$_.Matches | % {$_.Groups[1..3].Captures.Value; "`n"}} |
|
Отправлено: 12:26, 18-07-2020 | #5 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата rango13:
|
|
Отправлено: 15:54, 18-07-2020 | #6 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата rango13:
Цитата rango13:
и далее, либо воспользоваться встроенным парсером html, либо (что лучше и будет работать, в том числе и в версиях powershell core) воспользоваться внешним модулем PowerHTML #---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------ # Установка дополнительного модуля PowerHTML, для независимого парсинга HTML # Может потребоваться ручное подтверждение установки. if (!(get-module -list powerhtml)) { write-verbose "Installing PowerHTML module for the current user..." install-module powerhtml #-scope currentuser } #----------------------------------------------------------------------------------------- |
||
------- Отправлено: 19:32, 18-07-2020 | #7 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Цитата Fors1k:
Есть ли возможность вывода в одну строку, к примеру вот так: |
|
Отправлено: 15:11, 15-10-2021 | #8 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:08, 15-10-2021 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Распределить значения Select-String по разным переменным. | Uragan66 | Скриптовые языки администрирования Windows | 6 | 05-12-2019 10:50 | |
PowerShell - HDD/SSD S.M.A.R.T. - парсинг RAW-значений атрибутов. | rango13 | Скриптовые языки администрирования Windows | 3 | 02-07-2018 12:52 | |
PowerShell - [решено] Select-String $? всегда True | Elven | Скриптовые языки администрирования Windows | 1 | 09-04-2018 16:33 | |
[решено] Разница между импульсным и тоновым наборами номеров | Казбек | Хочу все знать | 10 | 02-06-2012 11:30 | |
PowerShell - [блог] Регулярные выражения – Select-String | Xaegr | Скриптовые языки администрирования Windows | 0 | 28-12-2009 18:30 |
|