Войти

Показать полную графическую версию : [решено] Парсинг файла.txt


Elven
29-11-2017, 13:22
Емеется файл 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" для каждой записи - новая строка.
Ivan Ivanov
Petr Petrov
Sidor Sidorov

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

Iska
29-11-2017, 13:40
Elven, сделать можно, но муторно. Чем этот файл был создан?

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

Kazun
29-11-2017, 13:53
(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
Сработало на раз. Только у файлов лишний пробел перед именем образовался, но это во-первых пофиг, во-вторых решается с полпинка. Спасибо.




© OSzone.net 2001-2012