EmEditor удаление строк по параметрам

Обсуждение любых программ, не имеющих отношения к Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

ArrowSoft
Сообщения: 3
Зарегистрирован: Вт июл 28, 2015 21:00

EmEditor удаление строк по параметрам

Сообщение ArrowSoft »

Добрый привет!
Подскажите пожалуйста как удалить строки содержащие более 16 символов и менее 16 символов, в txt через EmEditor.
:cry:
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

ArrowSoft
Видимо, макрос надо писать. Я тут пас, но на форуме есть более продвинутые специалисты. (Например, CaptainFlint, но он сейчас должен быть в отъезде.) И версию используемого EE надо в любом случае указать.
Даже самая богатая фантазия
Не представит себе наши безобразия.
ArrowSoft
Сообщения: 3
Зарегистрирован: Вт июл 28, 2015 21:00

Сообщение ArrowSoft »

Avada
я подумал можно через регулярное выражение, но не знаю как ими пользоваться тут. Спасибо за ответ :)
Версия 15.1.7
Последний раз редактировалось ArrowSoft Вт июл 28, 2015 21:42, всего редактировалось 1 раз.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Можно заменой с регулярным выражением.
Для удаления строк короче 16 символов заменить выражение (^|\n).{0,16}\n\n? на \1.
Для удаления строк длиннее 16 символов заменить чуть модифицированное выражение (^|\n).{16,}\n\n? на \1.
ArrowSoft
Сообщения: 3
Зарегистрирован: Вт июл 28, 2015 21:00

Сообщение ArrowSoft »

MVV
Спасибо! Помогло! :roll:
Но работает очень медленно, думал будет быстро.
Все так через Terminal мне будет проще удалить =)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

ArrowSoft
На скорость влияют разные факторы. Например, размер файла, рабочие процессы, загрузка памяти, процессор.
Вот "быстро" - это сколько?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Насколько я понимаю, в EmEditor загруженные в память файлы хранятся как массивы строк, поэтому операции по удалению или добавлению строк в многострочном файле медленны - видимо, из-за частого перестроения этого массива строк.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

[s]Есть ещё один способ. Закрепляем режим блочного выделения. Держим на первой строке после 16 символа Shift и жмём PgDn пока сепаратор не достинет конца рабочей области, потом отпускаем PgDn и нажимаем HOME или END (+ необх. число раз Вправо) в зависимости от того, с какой стороны удаляем, а после отпускаем Shift и жмём Del, соответственно.[/s]
Последний раз редактировалось Flasher Вт июл 28, 2015 23:35, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher,
Длинные строки же так просто укоротятся, но не удалятся целиком, или?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Блин, точно, я вообще о другом подумал... Вычёркиваю...
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

ArrowSoft
Что какие-то рекомендации помогли — замечательно, но правила форума попрошу соблюдать. Полное цитирование предыдущего поста — моветон. В таких случаях достаточно ника того, кому отвечают (вставляется кликом из левой части соответствующего поста). Ненужные цитаты удалены.
Даже самая богатая фантазия
Не представит себе наши безобразия.
umka
Сообщения: 2
Зарегистрирован: Сб янв 21, 2017 15:39

Сообщение umka »

MVV
Для удаления строк длиннее 16 символов заменить чуть модифицированное выражение (^|\n).{16,}\n\n? на \1.
Меня терзают смутные сомнения.

Что если текст будет такой:

Код: Выделить всё

Чт
о 
ка
ки
е-т
о р
ек
ом
ен
да
ци
Это регулярное выражение найдет первые любых . 16 символов (включая символы перевода строки, любые ведь), то есть:

Код: Выделить всё

Чт
о 
ка
ки
е-т
о р
ек
и заменит их на символ перевода строки или начала строки.
Хотя эти строки заведомо короче 16-ти символов.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

umka
Ничего подобного. Это в первом примере {0,16} даёт до 16 символов, а во втором {16,} даёт 16+, но по ТЗ тут 17 нужно писать.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Офтоп-- в CudaText есть плагин Filter Lines:
вводим там регэкс ^.{17,}$
и он найдет строки больше 16.
И наоборот можно- ^.{,16}$
umka
Сообщения: 2
Зарегистрирован: Сб янв 21, 2017 15:39

Сообщение umka »

Flasher
разве символы перевода строки не считаются за символы?
Ответить