#1: EmEditor удаление строк по параметрам Author: ArrowSoft, Posted: Tue Jul 28, 2015 22:04 Добрый привет!
Подскажите пожалуйста как удалить строки содержащие более 16 символов и менее 16 символов, в txt через EmEditor.
#2: Author: Avada, Location: Россия, СаратовPosted: Tue Jul 28, 2015 22:21 ArrowSoft
Видимо, макрос надо писать. Я тут пас, но на форуме есть более продвинутые специалисты. (Например, CaptainFlint, но он сейчас должен быть в отъезде.) И версию используемого EE надо в любом случае указать.
#3: Author: ArrowSoft, Posted: Tue Jul 28, 2015 22:41 Avada
я подумал можно через регулярное выражение, но не знаю как ими пользоваться тут. Спасибо за ответ
Версия 15.1.7
Last edited by ArrowSoft on Tue Jul 28, 2015 22:42; edited 1 time in total
#4: Author: MVV, Location: Ростов-ДонPosted: Tue Jul 28, 2015 22:41 Можно заменой с регулярным выражением.
Для удаления строк короче 16 символов заменить выражение (^|\n).{0,16}\n\n? на \1.
Для удаления строк длиннее 16 символов заменить чуть модифицированное выражение (^|\n).{16,}\n\n? на \1.
#5: Author: ArrowSoft, Posted: Tue Jul 28, 2015 22:51 MVV
Спасибо! Помогло!
Но работает очень медленно, думал будет быстро.
Все так через Terminal мне будет проще удалить =)
#6: Author: Flasher, Location: МоскваPosted: Tue Jul 28, 2015 23:08 ArrowSoft
На скорость влияют разные факторы. Например, размер файла, рабочие процессы, загрузка памяти, процессор.
Вот "быстро" - это сколько?
#7: Author: MVV, Location: Ростов-ДонPosted: Tue Jul 28, 2015 23:21 Насколько я понимаю, в EmEditor загруженные в память файлы хранятся как массивы строк, поэтому операции по удалению или добавлению строк в многострочном файле медленны - видимо, из-за частого перестроения этого массива строк.
#8: Author: Flasher, Location: МоскваPosted: Wed Jul 29, 2015 00:25 Есть ещё один способ. Закрепляем режим блочного выделения. Держим на первой строке после 16 символа Shift и жмём PgDn пока сепаратор не достинет конца рабочей области, потом отпускаем PgDn и нажимаем HOME или END (+ необх. число раз Вправо) в зависимости от того, с какой стороны удаляем, а после отпускаем Shift и жмём Del, соответственно.
Last edited by Flasher on Wed Jul 29, 2015 00:35; edited 1 time in total
#9: Author: MVV, Location: Ростов-ДонPosted: Wed Jul 29, 2015 00:32 Flasher,
Длинные строки же так просто укоротятся, но не удалятся целиком, или?
#10: Author: Flasher, Location: МоскваPosted: Wed Jul 29, 2015 00:35 MVV
Блин, точно, я вообще о другом подумал... Вычёркиваю...
#11: Author: Avada, Location: Россия, СаратовPosted: Wed Jul 29, 2015 09:23 ArrowSoft
Что какие-то рекомендации помогли — замечательно, но правила форума попрошу соблюдать. Полное цитирование предыдущего поста — моветон. В таких случаях достаточно ника того, кому отвечают (вставляется кликом из левой части соответствующего поста). Ненужные цитаты удалены.
#12: Author: umka, Posted: Sat Jan 21, 2017 16:48 MVV
Quote:
Для удаления строк длиннее 16 символов заменить чуть модифицированное выражение (^|\n).{16,}\n\n? на \1.
Меня терзают смутные сомнения.
Что если текст будет такой:
Code:
Чт
о
ка
ки
е-т
о р
ек
ом
ен
да
ци
Это регулярное выражение найдет первые любых . 16 символов (включая символы перевода строки, любые ведь), то есть:
Code:
Чт
о
ка
ки
е-т
о р
ек
и заменит их на символ перевода строки или начала строки.
Хотя эти строки заведомо короче 16-ти символов.
#13: Author: Flasher, Location: МоскваPosted: Sat Jan 21, 2017 16:59 umka
Ничего подобного. Это в первом примере {0,16} даёт до 16 символов, а во втором {16,} даёт 16+, но по ТЗ тут 17 нужно писать.
#14: Author: Alextp, Posted: Sat Jan 21, 2017 17:25 Офтоп-- в CudaText есть плагин Filter Lines:
вводим там регэкс ^.{17,}$
и он найдет строки больше 16.
И наоборот можно- ^.{,16}$
#15: Author: umka, Posted: Sat Jan 21, 2017 22:08 Flasher
разве символы перевода строки не считаются за символы?