Страница 1 из 2
EmEditor удаление строк по параметрам
Добавлено: Вт июл 28, 2015 21:04
ArrowSoft
Добрый привет!
Подскажите пожалуйста как удалить строки содержащие более 16 символов и менее 16 символов, в txt через EmEditor.

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

Версия 15.1.7
Добавлено: Вт июл 28, 2015 21:41
MVV
Можно заменой с регулярным выражением.
Для удаления строк короче 16 символов заменить выражение (^|\n).{0,16}\n\n? на \1.
Для удаления строк длиннее 16 символов заменить чуть модифицированное выражение (^|\n).{16,}\n\n? на \1.
Добавлено: Вт июл 28, 2015 21:51
ArrowSoft
MVV
Спасибо! Помогло!
Но работает очень медленно, думал будет быстро.
Все так через Terminal мне будет проще удалить =)
Добавлено: Вт июл 28, 2015 22:08
Flasher
ArrowSoft
На скорость влияют разные факторы. Например, размер файла, рабочие процессы, загрузка памяти, процессор.
Вот "быстро" - это сколько?
Добавлено: Вт июл 28, 2015 22:21
MVV
Насколько я понимаю, в EmEditor загруженные в память файлы хранятся как массивы строк, поэтому операции по удалению или добавлению строк в многострочном файле медленны - видимо, из-за частого перестроения этого массива строк.
Добавлено: Вт июл 28, 2015 23:25
Flasher
[s]Есть ещё один способ. Закрепляем режим блочного выделения. Держим на первой строке после 16 символа Shift и жмём PgDn пока сепаратор не достинет конца рабочей области, потом отпускаем PgDn и нажимаем HOME или END (+ необх. число раз Вправо) в зависимости от того, с какой стороны удаляем, а после отпускаем Shift и жмём Del, соответственно.[/s]
Добавлено: Вт июл 28, 2015 23:32
MVV
Flasher,
Длинные строки же так просто укоротятся, но не удалятся целиком, или?
Добавлено: Вт июл 28, 2015 23:35
Flasher
MVV
Блин, точно, я вообще о другом подумал... Вычёркиваю...
Добавлено: Ср июл 29, 2015 08:23
Avada
ArrowSoft
Что какие-то рекомендации помогли — замечательно, но
правила форума попрошу соблюдать. Полное цитирование предыдущего поста — моветон. В таких случаях достаточно ника того, кому отвечают (вставляется кликом из левой части соответствующего поста).
Ненужные цитаты удалены.
Добавлено: Сб янв 21, 2017 15:48
umka
MVV
Для удаления строк длиннее 16 символов заменить чуть модифицированное выражение (^|\n).{16,}\n\n? на \1.
Меня терзают смутные сомнения.
Что если текст будет такой:
Это регулярное выражение найдет первые любых . 16 символов (включая символы перевода строки, любые ведь), то есть:
и заменит их на символ перевода строки или начала строки.
Хотя эти строки заведомо короче 16-ти символов.
Добавлено: Сб янв 21, 2017 15:59
Flasher
umka
Ничего подобного. Это в первом примере {0,16} даёт до 16 символов, а во втором {16,} даёт 16+, но по ТЗ тут 17 нужно писать.
Добавлено: Сб янв 21, 2017 16:25
Alextp
Офтоп-- в CudaText есть плагин Filter Lines:
вводим там регэкс ^.{17,}$
и он найдет строки больше 16.
И наоборот можно- ^.{,16}$
Добавлено: Сб янв 21, 2017 21:08
umka
Flasher
разве символы перевода строки не считаются за символы?