![]() |
Select-String. Парсинг нескольких значений между наборами символов.
Всем привет!
Уже второй день бьюсь с задачей: есть текстовый файл, из которого необходимо вывести на экран несколько слов/цифр, находящихся между определённым текстом. Кусок файла, пример
... !--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 Первую строку достаю командой: Код:
(Select-String "(?<=!--PREVINFO_START-->)(.*?)(?=]<!--PREVINFO_END--></)" -InputObject $content -AllMatches | foreach {$_.matches}).value |
Код:
param( |
Цитата:
Пример
<!--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") ? |
Код:
(gc C:\temp\test\text.txt) -replace "^.*?gt;" -replace "<.*?$" |
Регулярное выражение на всю группу строк с подмасками. Выводим подмаски.
Код:
$regexp = "!--PREVINFO_START-->(.*?)<!--PREVINFO_END--></dfsdferwer |
Цитата:
Код:
param( |
Цитата:
Цитата:
Код:
gc test.txt -enc utf8|%{[net.webutility]::htmldecode($_)} Код:
#---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------ |
Цитата:
Код:
$name Код:
$name $serial $code |
чтобы так выводить надо преобразовывать под определенный формат, для примера чтобы было понятно что я имею ввиду:
Код:
$hash = [Ordered]@{ |
Время: 18:03. |
Время: 18:03.
© OSzone.net 2001-