Войти

Показать полную графическую версию : [решено] Удаление определённых строк в текстовом файле


Uragan66
01-06-2019, 16:09
Добрый день всем!
Никак не получается решить, проблему удаления некоторых строк в тексте.
В 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
Uragan66, удаления «строк» или «подстрок»?

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

Нужно удалить все строки, оставив только выделенные. »
Чем они однозначно отличаются от прочих?

Uragan66
01-06-2019, 19:44
удаления «строк» или «подстрок»? »
Iska, именно строк, вернее всего теста, кроме выделенного. В приведённом примере должен остаться только текст:
Fashion TV
http://буквенно-циферный url
Fashion TV HD
http://буквенно-циферный url
Fashion TV 3 HD
http://буквенно-циферный url
Fashion TV 9 HD
http://буквенно-циферный url
Чем они однозначно отличаются от прочих? »
Да практически ничем, кроме конечно названия (к примеру Fashion TV), они постоянные, следующая строка - ссылка, она меняется, также, как и в других строках.
Есть хорошая утилита для замены текста - nhrt (https://nhutils.ru/blog/nhrt/), вот только регулярку к ней не могу подобрать, те, что работают в Notepad++, здесь не срабатывают.

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

mwz
01-06-2019, 21:54
Uragan66, подсказка:
Fashion TV » — это или нет должно оставаться (с сопутствующей строкой)?

Sham
01-06-2019, 22:38
на всякий случай... https://regex101.com/r/am7wLh/1

YuS_2
02-06-2019, 09:43
Но усложнение в том, что 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
какое регулярное выражение в Notepad++ позволяет Вам удалить остальные строки и оставить только потребные? »
Должно было работать такое:
^(?!Fashion TV).*[\r\n]*но без ссылок, я как-то сразу не обратил внимание на это, начал искать консольное решение.
Regex в конструкторе, подсказанное Sham, работает, благодарю за подсказку!

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

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




© OSzone.net 2001-2012