Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Парсинг файла.txt (http://forum.oszone.net/showthread.php?t=331521)

Elven 29-11-2017 13:22 2780965

Парсинг файла.txt
 
Емеется файл
вида
ListName: Group1
Members: Ivan Ivanov, Petr Petrov, Sidor Sidorov

ListName: Group2
Members: Petr Petrov, Semen Semenov,Dormidont
Dormidontov

ListName: Group3
Members:

ListName: Group4
Members: Ivan Ivanov, Group2, Elena
Naprimer-Premudraya


В "Members" каждая запись указана через запятую, но может продолжаться на следующей строке (например как "Dormidont Dormidontov"), есть несколько двойных фамилий (например "Elena Naprimer-Premudraya"). Есть несколько пустых (как в Group3).

Нужно сформировать файлы с именем указанным в ListName (напр. Grpoup1.txt, Group2.txt), и забить их содержимым "Members" для каждой записи - новая строка.
Примерно так (для Group1.txt)
Ivan Ivanov
Petr Petrov
Sidor Sidorov


Начал ваять в cmd, но что-то не идет, а в posh я что-то как-то не особо...

Iska 29-11-2017 13:40 2780970

Elven, сделать можно, но муторно. Чем этот файл был создан?

Elven 29-11-2017 13:49 2780974

Iska, коллега выдрал из почтовика (domino), это уже файл подкорректирован, изначально он выглядел еще страшнее.

Kazun 29-11-2017 13:53 2780975

Код:

(gc 1.txt) -join " " -split "ListName: " | ? {$_ -match "^(.+) Members: (.+)$"} | % {
        Out-File "$($matches[1]).txt" -InputObject $matches[2].replace(", ","`r`n")
}


Elven 29-11-2017 14:09 2780981

Сработало на раз. Только у файлов лишний пробел перед именем образовался, но это во-первых пофиг, во-вторых решается с полпинка. Спасибо.


Время: 11:43.

Время: 11:43.
© OSzone.net 2001-