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

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

Uragan66 01-06-2019 16:09 2873978

Удаление определённых строк в текстовом файле
 
Добрый день всем!
Никак не получается решить, проблему удаления некоторых строк в тексте.
В Notepad++ с помощью регулярки это конечно можно сделать без проблем, но нужна или консольная утилита или скрипт, с возможностью запуска из батника.
Собственно пример текста:
Код:

Diva Universal (Россия)
http://буквенно-циферный url
Familia Domashniy
http://буквенно-циферный url
Fashion TV
http://буквенно-циферный url
Fashion TV HD
http://буквенно-циферный url
Fashion TV 3 HD
http://буквенно-циферный url
Fashion TV 9 HD
http://буквенно-циферный url

Fine Living
http://буквенно-циферный url
Fine Living Europe
http://буквенно-циферный url
Fine Living Network
http://буквенно-циферный url
Food Network
http://буквенно-циферный url
Food Network HD
http://буквенно-циферный url

Нужно удалить все строки, оставив только выделенные. Но усложнение в том, что url переменные, да и количество строк, как до нужного блока текста, так и после него может быть разное.
Может есть скрипт или консольная утилита для такой задачи ?
Буду очень благодарен за помощь и подсказки.

Iska 01-06-2019 18:06 2873991

Uragan66, удаления «строк» или «подстрок»?

Утилита — sed. Скрипты — WSH или PoSH (последний «тяжелее», но возможностей у регулярок больше).

Цитата:

Цитата Uragan66
Нужно удалить все строки, оставив только выделенные. »

Чем они однозначно отличаются от прочих?

Uragan66 01-06-2019 19:44 2873998

Цитата:

Цитата Iska
удаления «строк» или «подстрок»? »

Iska, именно строк, вернее всего теста, кроме выделенного. В приведённом примере должен остаться только текст:
Код:

Fashion TV
http://буквенно-циферный url
Fashion TV HD
http://буквенно-циферный url
Fashion TV 3 HD
http://буквенно-циферный url
Fashion TV 9 HD
http://буквенно-циферный url

Цитата:

Цитата Iska
Чем они однозначно отличаются от прочих? »

Да практически ничем, кроме конечно названия (к примеру Fashion TV), они постоянные, следующая строка - ссылка, она меняется, также, как и в других строках.
Есть хорошая утилита для замены текста - nhrt, вот только регулярку к ней не могу подобрать, те, что работают в Notepad++, здесь не срабатывают.

Iska 01-06-2019 21:48 2874012

Uragan66, хорошо, я перефразирую: какое регулярное выражение в Notepad++ позволяет Вам удалить остальные строки и оставить только потребные?

mwz 01-06-2019 21:54 2874015

Uragan66, подсказка:
Цитата:

Цитата Uragan66
Fashion TV »

— это или нет должно оставаться (с сопутствующей строкой)?

Sham 01-06-2019 22:38 2874028

на всякий случай... https://regex101.com/r/am7wLh/1

YuS_2 02-06-2019 09:43 2874046

Цитата:

Цитата Uragan66
Но усложнение в том, что url переменные, да и количество строк, как до нужного блока текста, так и после него может быть разное. »

powershell
Код:

sls test.txt -enc utf8 -patt 'Fashion TV' -context 0,1|
%{$_.line;$_.context.postcontext}|out-file out.txt -enc utf8


Uragan66 02-06-2019 14:14 2874074

Цитата:

Цитата Iska
какое регулярное выражение в Notepad++ позволяет Вам удалить остальные строки и оставить только потребные? »

Должно было работать такое:
Код:

^(?!Fashion TV).*[\r\n]*
но без ссылок, я как-то сразу не обратил внимание на это, начал искать консольное решение.
Regex в конструкторе, подсказанное Sham, работает, благодарю за подсказку!

Сейчас вроде что-то прояснилось. Большое спасибо всем за помощь !

YuS_2, спасибо за код, попробую, может скриптом будет удобнее, чем утилитой nhrt.


Время: 07:07.

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