Удаление пустых строк в Notepad ++

Как заменить пустые строки в Notepad ++? Я попробовал найти и заменить с пустыми строками в поиске и ничего не в замене, но это не сработало; вероятно, ему нужно регулярное выражение.


person nomoreflash    schedule 05.10.2010    source источник


Ответы (22)


Вам нужно что-то вроде регулярного выражения.

Вы должны быть в Extended режиме

Если вы хотите, чтобы все строки оказались в одной строке, используйте \r\n. Если вы хотите просто удалить пустые строки, используйте \n\r, как изначально предлагалось @Link.

Ничего не заменяйте любое выражение.

person Brad    schedule 05.10.2010
comment
Сначала следует выбрать «расширенный» в режиме поиска. - person q0987; 17.04.2012
comment
Следует отметить, что замена all на \r\n\r\n может привести к объединению 2 ваших строк. 23 Текст в строке 23! \r\n 24 \r\n 25\r\n 26Line 26 text.r\n может быть сжат до 23 Text on line 23! Line 26 text. - person Robert Kaucher; 13.07.2012
comment
Чтобы ваши строки не соединялись вместе, вам нужно найти \r\n\r\n и заменить на \r\n. - person Robert Kaucher; 13.07.2012
comment
См. Комментарий @ BoltClock ниже. Кроме того, если ваш файл сохранен с окончанием строки Unix, вы можете преобразовать его в окончания строки Windows в меню Правка ›Преобразование EOL› Формат Windows перед выполнением поиска и замены. - person Big McLargeHuge; 16.08.2012
comment
Если вы хотите удалить строки только с пробелами и табуляциями или ничего, попробуйте использовать замену регулярного выражения для соответствия \r\n\W*\r\n и заменить на \r\n - person Myster; 14.04.2014
comment
@Myster Первое, что нужно сказать, я почти не знаю регулярных выражений, поэтому извиняюсь, если я ошибаюсь. Я думаю, что ваше предложение не поможет с большим количеством пустых строк подряд, вы его тестировали и действительно ли оно работает? - person ST3; 17.08.2015
comment
@ ST3 хм, о чем я думал? Этот намного лучше: (\r\n|\r|\n)(\s*(\r\n|\r|\n))+ и замените его на \r\n, посмотрите его в действии здесь: regex101.com/r/qD9dB1/1 - person Myster; 18.08.2015
comment
О чем ты, черт возьми, говоришь, когда говоришь \ n \ r, что понимаешь, что у тебя все наоборот, не так ли? - person barlop; 18.03.2018
comment
@barlop, \n\r - для удаления полностью пустых строк. например line 1\r\n\r\nline 3: удаление \ n \ r оставит вас с line 1\r\nline 3 - person Brad; 16.04.2019

Теперь есть встроенный способ сделать это начиная с версии 6.5.2.

Edit -> Line Operations -> Remove Empty Lines or Remove Empty Lines (Containing Blank characters)

Скриншот удаления пустых строк

person Halfwarr    schedule 06.01.2014
comment
К сожалению, это не учитывает ваш выбор, он удалит все пустые строки в файле, даже если вы выбрали только некоторые из них. - person Fabio says Reinstate Monica; 11.10.2016
comment
Если это разовая операция, вы можете извлечь выбранные строки на новую вкладку notepad ++ и выполнить эту операцию там. Процедура копирования-вставки в течение 5 секунд. На мой взгляд, любой другой обходной путь, который не может быть реализован за это время, является пустой тратой. Но если вы делаете это каждый день 100 раз ... - person creed; 16.10.2018
comment
Я использовал это (даже назначил свой ярлык), но он намного медленнее, чем вариант выше, поэтому используйте его с умом ... - person Betlista; 09.06.2019

Есть плагин, который добавляет меню под названием TextFX. Это меню, в котором находится головокружительный набор опций быстрого редактирования текста, дает человеку возможность быстро вносить изменения в код. В этом меню вы можете найти такие пункты, как «Пропустить кавычки», «Удалить пустые строки», а также «Развернуть» и «Перенести текст заново».

Сделайте следующее:

TextFX > TextFX Edit > Delete Blank Lines
TextFX > TextFX Edit > Delete Surplus Blank Lines
person Community    schedule 05.10.2010
comment
Не знаю когда, но похоже, что этот плагин сейчас установлен по умолчанию. Слегка не по теме, но одна из других невероятно полезных функций в разделе TextFX > TextFX Tools - это сортировка строк с возможным удалением дубликатов. Очень удобный способ сделать Unix sort -u в Windows без cygwin, unxutils и т.п. - person Cam Jackson; 06.10.2011
comment
Вот ссылка на плагин TextFx. Я нашел его очень полезным. Используйте: Settings > Import > plugin... и найдите файл dll, чтобы установить его. Он становится пунктом меню от Plugins - person Nick Pickering; 02.11.2012
comment
будет ли это работать со всеми открытыми документами или с одним документом за раз? - person Derelict; 01.06.2016

  1. блокнот ++
  2. Ctrl-H
  3. Выберите регулярное выражение
  4. Введите ^[ \t]*$\r?\n в поле "Найти", оставьте поле "заменить" пустым. Это будет соответствовать всем строкам, начинающимся с пробела и заканчивающимся возвратом каретки (в данном случае crlf Windows)
  5. Нажмите кнопку «Найти далее», чтобы убедиться, что она соответствует только пустым строкам.
person SleepyBoBos    schedule 28.12.2012
comment
Мне пришлось использовать этот метод вместо некоторых других методов, чтобы заставить его легко работать в макросе. Спасибо. - person Mafu Josh; 09.10.2014
comment
даже более короткие и меньшие замены, необходимые из-за нескольких пустых строк, будут заменены сразу: ^ \ s * $ \ r? \ n - person njank; 16.12.2017
comment
В блокноте ++ я использовал (^[ \t]*$\s)\s* в поле поиска и оставил замену пустым. Работает отлично. Спасибо! - person slyfox1186; 21.06.2020
comment
почему ^\s*$ работает для нескольких строк? не следует ^ $ ограничивать его одной строкой? (@njank или кто-нибудь еще) - person Albin; 02.12.2020
comment
Спасибо за это выражение регулярного выражения, оно сработало хорошо, но выполнение заняло некоторое время. - person abunickabhi; 04.02.2021

  1. Нажмите ctrl + h (ярлык для замены).
  2. В зоне Найти что введите ^\R (только для пустых строк) или ^\h*\R (только для пустых строк с пробелами).
  3. Оставьте зону Заменить на пустой.
  4. Установите флажок Обтекать.
  5. Выберите режим поиска Регулярное выражение.
  6. Нажмите кнопку Заменить все.

введите описание изображения здесь

person Alex.K.    schedule 25.02.2018
comment
Это сработало для меня без каких-либо проблем или дополнительных настроек. Спасибо! - person Bonez024; 30.07.2019
comment
За исключением того, что он короче, чем отличается ответ SleepyBoBos? - person Albin; 30.11.2020
comment
@Albin, другое регулярное выражение: SleepyBoBos: ^ [\ t] * $ \ r? \ N Это будет соответствовать всем строкам, начинающимся с пробела и заканчивающимся возвратом каретки (в данном случае crlf Windows) Моя версия: ^ \ R (для точные пустые строки) или ^ \ h * \ R (только для пустых строк с пробелами). - person Alex.K.; 30.11.2020
comment
@ Alex.K. это я понял, так как это уже упоминалось в самих ответах. Извините, надо было быть более конкретным: есть ли что-нибудь еще в пробеле, кроме пробела и табуляции в \h? Также \r?\n уже включает разрывы строк Win и Unix, в чем преимущество использования \R? Существуют ли регулярные варианты использования, когда вам это нужно? - person Albin; 02.12.2020

Вы можете следовать технике, показанной на следующем снимке экрана:

  • Найдите что: ^\r\n
  • Заменить на keep this empty
  • Режим поиска: Regular expression
  • Обтекание: выбрано

введите описание изображения здесь

ПРИМЕЧАНИЕ. для файлов * nix просто найдите по \n

person Saikat    schedule 26.06.2018
comment
работает хорошо (примечание: не для строк, которые включают какие-либо непечатаемые символы, такие как пробел или табуляция) - person Albin; 30.11.2020
comment
Очень понравилось! Это должен был быть принятый ответ. - person AFPP; 22.03.2021

Это сработало для меня:

  1. Нажмите ctrl + h (ярлык для замены)
  2. Напишите одно из следующих регулярных выражений в поле find what. [\n\r]+$ или ^[\n\r]+
  3. Оставьте поле Replace with пустым
  4. В Search Mode выберите Regex
  5. Нажмите Replace All

    Готово!
person Kamal Nayan    schedule 13.10.2015
comment
Это единственное решение, которое не испортило мои огромные файлы .csv. Спасибо! - person veuncent; 30.08.2017
comment
плюс один, потому что я наконец знаю ярлык для замены :-D - person Betlista; 09.06.2019

В блокноте ++ нажмите CTRL + H, в режиме поиска щелкните переключатель «Расширенный (\ n, \ r, \ t ...)», затем введите в поле «Найти»: \ r \ n (сокращение от CR LF ) и оставьте поле "Заменить на" пустым.

Наконец нажмите заменить все

person Bassem    schedule 05.10.2010
comment
на самом деле, я пробовал, см. мои пояснения в моем ответе. Вы что-то поняли! - person Brad; 05.10.2010
comment
Это предполагает, что окончания строк - это Windows (CRLF), хотя, если ваш файл сохранен с окончаниями строк Unix, ищите только \n. - person BoltClock; 05.10.2010
comment
@Brad: Я написал между (), сокращением для CR LF, не хотел, чтобы codetrek думал, что \ n - это CR, поэтому редактирование. - person Bassem; 05.10.2010
comment
Неверный ответ, помещает все строки в одну. - person m0skit0; 13.07.2017

Ну, я не уверен насчет регулярного выражения или вашей ситуации ..

Как насчет CTRL + A, выберите меню TextFX -> TextFX Edit -> Удалить пустые строки и альт все пустые строки исчезнут.

Боковое примечание - если строка пуста, т.е. не содержит пробелов, это сработает.

person Ahmad    schedule 05.10.2010

Вы можете найти следующее регулярное выражение: ^(?:[\t ]*(?:\r?\n|\r))+ и заменить его пустым полем

person Ya Basha    schedule 10.05.2014

Ctrl + H.

найти - \ r \ r заменить на - \ r.

person mahesh adepu    schedule 08.08.2011
comment
Это работает для меня, удаляя лишнюю строку, в смысле поиска замены двойного \ r на одиночный \ r. Спасибо!! - person genpet; 03.06.2012
comment
Это сработало хорошо, однако я обнаружил, что мне нужно запустить его несколько раз в моем документе, прежде чем все экземпляры \ r \ r исчезнут. Не знаю почему. - person Hawkwing; 21.08.2013

1) Ctrl + H (или Search ???? Replace..), чтобы открыть окно замены.

2) Выберите 'Search Mode' "Регулярное выражение".

3) В "Найти что" введите ^(\s*)(.*)(\s*)$, а в "Заменить на" введите \2.

  • ^ - соответствует началу строки символа
  • (\s*) - соответствует пустым пробелам
  • (.*) - соответствует любым символам
  • (\s*) - соответствует символам пустых пробелов
  • $ - соответствует символу конца строки
  • \2 - обозначает совпадение второй скобки

введите здесь описание изображения См. https://www.rexegg.com/regex-quickstart.html, чтобы узнать больше о регулярных выражениях.

person Praboda    schedule 17.07.2019
comment
Обратите внимание: это не только заменяет пустые строки, но и заменяет, например, отступы (табуляция и пробел), а также - person Albin; 30.11.2020

Это явно не работает, если пустые строки содержат табуляторы или пробелы. Многие веб-страницы (например, http://www.guardian.co.uk/) содержат эти белые линии , в результате неправильного редактора HTML.

Удалите пробелы с помощью регулярного выражения следующим образом:

изменить шаблон: [\ t] + $ в ничто.

где [\ t] соответствует либо табуляции, либо пробелу. '+' соответствует одному или нескольким вхождениям, а '$' обозначает конец строки.

Затем используйте notepad ++ / textFX, чтобы удалить одиночные или лишние пустые строки. Убедитесь, что эти пустые строки не имеют значения в данном контексте.

person Poisson    schedule 17.06.2012

  1. Правка >> Пустые операции >> Обрезать начальные и конечные пробелы (для удаления черных табуляции и пробелов в пустых строках)
  2. Ctrl + H, чтобы получить окно замены и заменить шаблон: ^\r\n ничем (выберите регулярное выражение)

Примечание. На шаге 1 будет удалено намерение кода, сделанное с помощью вкладок и пробелов.

person Adeeb    schedule 30.01.2013

введите описание изображения здесь

Иногда \ n \ r и т. Д. Не работают, вот чтобы понять, каким должно быть ваше на самом деле регулярное выражение.

Преимущество этого трюка: если вы хотите заменить сразу несколько файлов, вам понадобится этот метод. Выше не получится ...

person Wasim A.    schedule 16.12.2014

CTRL + A, выберите меню TextFX -> TextFX Edit -> Удалить пустые строки, как предложено выше.

Но если в строках есть пробел, переместите курсор на эту строку и нажмите CTRL + H. Секция «Найти что:» покажет пустое пространство, а в разделе «Заменить на» оставьте его пустым. Теперь все пробелы удалены, и теперь попробуйте CTRL + A, выберите меню TextFX -> TextFX Edit -> Удалить пустые строки

person Community    schedule 20.03.2013

/n/r предполагает определенный тип разрыва строки. Чтобы настроить таргетинг на любую пустую строку, вы также можете использовать:

^$

Здесь сказано - любая строка, которая начинается и заканчивается ничем между ними. Это больше похоже на все. Замените такой же пустой строкой.

person AshBrad    schedule 10.02.2015

Я не видел комбинированного ответа в качестве ответа, поэтому найдите ^ \ s + $ и замените его на {ничего}

^\s+$ means
  ^ start of line
  \s+ Matches minimum one whitespace character (spaces, tabs, line breaks)
  $ until end of line
person user2056154    schedule 31.05.2016
comment
если вам нужно несколько строк, вы можете попробовать: ^\s+^(\S) и заменить на \1. - person jiggunjer; 03.11.2017

Простая альтернатива для удаления пробелов из пустых строк:

  1. TextFX> Редактировать TextFX> Обрезать конечные пробелы

Это удалит все конечные пробелы, включая конечные пробелы в пустых строках. Убедитесь, что конечные пробелы не имеют значения.

person poisson    schedule 03.07.2012

Некоторые из приведенных выше выражений и расширенных выражений у меня не работали, но регулярное выражение «$ \ n $» работало.

person Chris    schedule 29.04.2014

эта работа для меня:

SEARCH:^\r  
REPLACE:            (empty)
person Rafael Marques    schedule 12.07.2019
comment
Это не будет работать для linux eol \n и windows eol \r\n - person Toto; 15.07.2019

Этот шаблон протестирован в Notepad ++ v8.1.1

Он заменяет все spaces/tabs/blank lines до и после каждой строки текста.

Он не должен ничего путать в середине текста.

Find: ^(\s|\t)+|(\s|\t)+$

Replace: leave this blank


Before:
_____________________________________
\tWORD\r\n
\r\n
\tWORD\s\tWORD\s\t\r\n
\r\n
\r\n
WORD\s\s\tWORD\t\sWORD\s\r\n 
\t\r\n
\s\s\s\r\n
WORD\s\sWORD\s\s\t\r\n

____________________________________


After:
_____________________________________
WORD\r\n
WORD\s\tWORD\r\n
WORD\s\s\tWORD\t\sWORD\r\n
WORD\s\sWORD
_____________________________________
person slyfox1186    schedule 06.07.2021