![]() |
Скрипт по сбору строк из множества файлов в один.
Доброго всем!, выпала мне рутинная задача собрать из выгруженных файлов информацию в один,
вот что смог собрать $LineNumber = ‘(wireless.1.ssid=|netconf.3.autoip.status)’ $text = $LineNumber Get-ChildItem -Path “c:\1\” -Include *.cfg -Exclude "!*" -Recurse | select-string -Pattern $text -Encoding "Default" -Context 0,10 | foreach {@($_.FileName), @($_.LineNumber), @($_.Line)}> out.txt Вроде работает, но есть проблема файл не структурирован результат: -------------------------------------------------- 10.12.3.20-XM-6875412AA694.cfg 78 netconf.3.autoip.status=disabled 10.12.3.20-XM-6875412AA694.cfg 250 wireless.1.ssid=_WIFI 10.12.3.22-XM-6872514677E6.cfg 76 netconf.3.autoip.status=disabled 10.12.3.22-XM-6872514677E6.cfg 248 wireless.1.ssid=_WIFI -------------------------------------------------- Хотелось бы видеть отдельным блоком для каждого файла. как то так: 10.12.3.20-XM-6875412AA694.cfg netconf.3.autoip.status=disabled wireless.1.ssid=_WIFI 10.12.3.22-XM-6872514677E6.cfg netconf.3.autoip.status=disabled wireless.1.ssid=_WIFI Спасибо. |
Как-то непонятно куда куски вывода подевались и каким боком они структурировались. А еще, по секрету говорю, никому не признавайтесь, скоро Iska отпишется в этой ветке и потребует исходные файлы. Обычно их удобнее расковыривать, чем возиться с уже полученным выводом.
|
Ну, вот, мною уже и детей пугают ;).
Load980, нужны а) образцы исходных файлов (упакуйте в архив, выложите на RGhost или Яндекс.Диск) и б) внятное описание техзадания — что нужно получить. |
Вот пара файлов из которых нужно извлечь информацию
http://rgho.st/6jStXYQYH Тех задание. Сделать выборку строк из множества файлов с одинаковым расширением, осуществить поиск строк содержащих информацию $text = ‘(wireless.1.ssid=|netconf.3.autoip.status|devname)’ - например для этих, сделать выборку по совпадению вывести строки в текстовый файл по шаблону: <Имя файла_1> <Строка_1> <Строка_2> <Строка_3> <Строка_4> <Имя файла_2> <Строка_1> <Строка_2> <Строка_3> <Строка_4> ... |
Цитата:
Цитата:
Пишите простым человеческим языком, в ТЗ не надо ничего изобретать. Цитата:
Откуда возьмётся Строка_4, если в шаблоне поиска три значения для поиска? Какое-то значение встретится несколько раз? Возможно. Но, опять же, Вы рассчитываете, что выборка окажется в строго заданном порядке. А ну как окажется, что — нет? Потому изложите данное условие в виде: сначала идёт имя файла, в котором осуществляется выборка, затем строка с netconf.3.autoip.status, затем строка с wireless.1.ssid, затем строка с… и т.д. P.S. Вам конечный результат/вид выходного файла для каких целей потребен? Что с ним планируете делать? |
Я Вас понял.
Теперь человеческим языком ) Есть куча сгруженных конфигов с оборудования, была поставлена задача собрать со всех конфигов значения параметров в данном случае это строки после знака "=" их значения, они собственно и нужны, если возможно вывести только их то будет вообще отлично. <Имя файла> из которого собираем netconf.3.ip= aaa.1.ssid= radio.1.chanbw= radio.1.freq= users.1.name= wireless.1.ssid= Цитата:
http://rgho.st/7yZ6Kmmyw |
Многое непонятно в этой таблице. Где в ней, скажем, имя файла? Или, получается, оно вообще не нужно, несмотря на написанное ранее?! Какое соответствие между заголовками таблицы и перечисленными параметрами для выборки?
Что-то со скрипом идёт у меня PowerShell. Попробуйте на WSH: Скрытый текст
Код:
Option Explicit Вызывайте в виде: Код:
>"Result.csv" cscript.exe //nologo "Путь\Скрипт.vbs" "Путь к искомой папке" Скрытый текст
![]() |
Код:
$Path = 'C:\1\' |
Вложений: 1
Если надо конечный результат в Excel, вот решение, которое макросом собирает данные непосредственно в Excel в прикреплённом Excel-файле (заархивировано в Бланк20170129.rar).
Как пользоваться: 1. Открыть xls-файл (это пустой бланк для дальнейшей работы), открыть макрос для изменения, прописать путь, откуда берутся файлы и, по образцу, имена параметров и в какие ячейки они должны попадать. Сохранить на будущее.
2. Запустить макрос на выполнение, он создаст из бланка новую книгу, куда будут сведены данные из cfg-файлов Так как Вами поставлена задача недостаточно четко, в дальнейшем можно переделать бланк в том виде, какой Вам требуется - макрос построен достаточно гибко, чтобы указать нужные данные и их местоположение. Что касается начальной постановки, вот решение CMD
Цитата:
Код:
@Echo off |
Решено ! Большое спасибо megaloman, то что нужно. Решение от Iska, тоже работает, осталось только допилить под себя и можно собирать данные.
Спасибо еще раз! |
Время: 05:53. |
Время: 05:53.
© OSzone.net 2001-