Знайдіть CRLF у Блокноті ++


316

Як я можу знайти / замінити всі символи CR / LF в Notepad ++?

Я шукаю щось еквівалентне спеціальному символу ^ p у Microsoft Word.


Тільки для того, щоб трохи побудувати на тому, що згадував цей "хакер". У роботі ми використовуємо ULtraEdit-32, а працюючи з файлами EDI (x.12), нам часто доводиться обертати або видаляти дані. Дві найпоширеніші рядки пошуку та заміни - це "^ p" & "~". Якщо піти в один бік, то "~" замінить CR / LF для легшого читання кожного сегмента. Інший спосіб повертає файл у той формат, який потребує перекладач EDI. Для ледачих людей, таких як я, я просто маю ці карти, які мають клавіші для зручності користування.
DavidGrove

1
Хоч і не пов’язана, але корисна. Я відвідав цю сторінку після пошуку способу перетворення текстового файлу UNIX у формат Windows у Windows. Це те, що я зробив і працював CTRL+H, виберіть "Режим пошуку: регулярне вираження". "Знайти що: $" та "Замінити на: \ r". Скопіюйте вміст у Блокнот або збережіть його на диску.
Гуру

2
Так! Notepad ++ 6.0 приносить підтримку PCRE: регулярний вираз, як [\r\n]+зараз, працює. Я оновив свою відповідь і святкуватиму!
VonC

@VonC: Я думаю, мені також потрібно оновити всі свої [блокнот ++] відповіді :)
BoltClock

Відповіді:


412

[\r\n]+ також повинен працювати

Оновлення 26 березня 2012 року, дата випуску Notepad ++ 6.0 :

OMG, він насправді працює зараз !!!

PCRE regexp у Блокноті ++


Оригінальна відповідь 2008 (Блокнот ++ 4.x) - 2009-2010-2011 (Блокнот ++ 5.x)

Насправді ні, це, здається, не працює з regexp ...

Але якщо у вас є Notepad ++ 5.x, ви можете використовувати режим " розширеного " пошуку та шукати \r\n. Це знайде все ваше CRLF.

(Я розумію, що це та сама відповідь, що й інші, але знову ж таки, "розширений режим" доступний лише для Notepad ++ 4.9, 5.x і більше)


Починаючи з квітня 2009 року, ви маєте статтю на вікі на цій сторінці «Блокнот ++» на тему:
« Як замінити закінчення рядків, змінивши таким чином макет лінії ».
(згадується georgiecasey у своїй / її відповіді нижче )

Деякі відповідні витяги включають такі пошукові процеси:

Простий пошук ( Ctrl+ F), режим пошуку =Normal

Ви можете вибрати EOLвікно редагування.

  • Просто перемістіть курсор до кінця рядка та введіть Shift+ RightСтрілка.
  • або, щоб вибрати EOLмишкою, почніть просто з кінця рядка та перетягніть на початок наступного рядка; перетягування праворуч EOLне буде працювати. Ви можете вручну скопіювати EOLта вставити його в поле для файлів Unix ( LF-лише).

Простий пошук (Ctrl + F), режим пошуку = розширений

«Розширений» варіант показує \nі , \rяк символи , які можуть бути узгоджені.
Як і у звичайному режимі пошуку, Notepad ++ шукає точного символу.
Пошук \rу файлі формату UNIX нічого не знайде, але пошук за \nволею. Аналогічно, файл у форматі Macintosh буде містити, \rале ні \n.

Простий пошук (Ctrl + F), режим пошуку = регулярний вираз

У регулярних виразах використовуються символи ^та $прив’язувати рядок відповідності до початку чи кінця рядка. Наприклад, пошук return;$знайде входження "return;" які трапляються без наступного тексту на цьому ж рядку. Персонажі якіря працюють однаково у всіх форматах файлів.
'.' точковий метахарактер не відповідає закінченням рядків.

[Тестовано в Блокноті ++ 5.8.5]: звичайний пошук виразів із явним \rабо \nне працює (всупереч документації Scintilla ) .
Не проводиться також пошук по явному (вставленому) LF або по (невидимим) символам EOL, розміщеним у полі, коли вибрано EOL. Розширений пошук ( Ctrl+ R) без повторного вираження

Ctrl+ Mвставить щось, що відповідає новим рядкам. Їх замінить рядок заміни.
Я рекомендую цей метод як найнадійніший, якщо тільки вам не потрібно використовувати регекс.
Наприклад, щоб видалити кожний другий новий рядок у двомісному інтервалі, введіть Ctrl+ Mдвічі у вікні рядка пошуку та один раз у вікні заміни рядка.

Розширений пошук ( Ctrl+ R) за допомогою Regexp.

Ні Ctrl+ M, $ні \r\nзіставлені.


У тій же вікі також згадується альтернатива редактора Hex :

  • Введіть новий рядок на початку документа.
  • Потім виберіть, щоб переглянути документ у шестигранному режимі .
  • Виберіть один із нових рядків і натисніть Ctrl+ H.
  • Поки у вас з'явилося діалогове вікно Замінити, виберіть на задньому плані новий рядок заміни та Ctrl+ Cскопіюйте його, щоб вставити його у Замінити текстовим введенням.
  • Потім замініть або замініть все, як хочете.

Примітка: символ, обраний для нового рядка, зазвичай відображається як 0a.
Якщо файл знаходиться у форматі Windows, він може мати інше значення. У такому випадку ви завжди можете перейти Edit -> EOL Conversion -> Convert to Unix Format, а після заміни перемкнути його назад і Edit -> EOL Conversion -> Convert to Windows Format.


1
Я бігав v 4.7. Оновлений до новітньої версії та розширеного режиму працює як рекламується. Дякую всім, хто відгукнувся.
поляра

+1: Я працював на 4.6, і у мене була схожа проблема. І завдяки вашій відповіді я перейшов до рівня 5+. Дякую!
paercebal

Це працює! Але це робить Блокнот ++ RegExp смоктати. UltraEdit-32 розумніший, вам просто потрібно \ n, і ви закінчили свою роботу ...
thenonhacker

\ r \ n працював для мене, але не \ n, що є протилежною інтуїтивністю, якщо ви розробник, який звик \ n бути скороченим для \ r \ n.
Warren P

2
@GarretWilson Я підтверджую, що це [^\r]\nпрацює чудово (пошук по регулярному вибору
VonC

22

Здається, що це FAQ , і пропонована резолюція:

Простий пошук (Ctrl + H) без повторного вираження

Ви можете увімкнути Перегляд / Показати кінець рядка або переглянути / Показати всі та вибрати видимі символи нового рядка. Потім, коли ви запускаєте команду, деякі символи, що відповідають новому рядку, будуть вставлені в поле пошуку. Матчі будуть замінені рядком заміни, на відміну від режиму регулярного вираження.

Примітка 1: Якщо ви вибираєте їх мишкою, почніть безпосередньо перед ними та перетягніть на початок наступного рядка. Перетягування до кінця рядка не спрацює.

Примітка 2. Ви не можете самостійно скопіювати та вставити їх у поле.

Розширений пошук (Ctrl + R) без повторного вираження

Ctrl + M вставить щось, що відповідає новим рядкам. Їх замінить рядок заміни.


2
Ви можете використовувати Ctrl + M, щоб вставити нові рядки в рядок заміни.
Дасті Кемпбелл

2
Це FAQ, тому що це трохи дизайнерська бородавка в інакше блискучому продукті.
Warren P

11

У діалоговому вікні Замінити потрібно встановити режим пошуку на "Розширений". Нормальні або регулярні режими вираження звикли не працювати.

Потім просто знайдіть "\ r \ n" (або просто \ n для файлів unix або просто \ r для файлів формату mac) і встановіть заміну на все, що вам потрібно.


Ця відповідь застаріла, коли була написана - Mac не використовується \rз 2001 року ... (зараз це Unix)
Джаспер,

9

Мені не пощастило з \ r \ n регулярними виразами у вікні пошуку / заміни.

Однак це працює в Notepad ++ v4.1.2:

  1. Використовуйте меню "Переглянути | Показати кінець рядка", щоб увімкнути відображення символів кінця рядка. (Лента каналу повернення каретки повинна відображатися як один затінений "символ" CRLF.)

  2. Виберіть одного з символів CRLF (поставте курсор навпроти одного, утримуйте клавішу SHIFT, а потім натисніть клавішу ВПРАВО КУРСОР один раз).

  3. Скопіюйте символ CRLF у буфер обміну.

  4. Переконайтесь, що у вас немає відкритого діалогового вікна знаходження чи пошуку / заміни.

  5. Відкрийте діалогове вікно пошуку / заміни. Поле "Знайти що" показує вміст буфера обміну: у цьому випадку символ CRLF - який відображається у вигляді 2 "символів поля" (імовірно, це недрукований символ?)

  6. Переконайтесь, що параметр "Регулярний вираз" вимкнено.

Тепер ви можете мати можливість порахувати, знайти чи замінити за бажанням.



4

Я знайшов це для роботи за допомогою функції «Замінити» та за допомогою «\ n» у режимі «Розширений». Я використовую версію 5.8.5.


1
Один з дуже небагатьох елементів на цій сторінці, який працює. Використання блокнота ++ 5.8.6. Справді важко повірити в щось таке просте, що потребує кількості надто складних і часто непрацюючих відповідей, що були наведені в цій темі.
Andrew S

4

У 2013, v6.13 або новіших версіях використовуйте:

Редагування меню → Перетворення EOLФормат Windows .


Це не стосується загального випадку заміни CRLF одним або кількома довільними символами. Або заміни одного або декількох довільних символів на CRLF (скажімо, замініть символи пробілу на CRLF).
Пітер Мортенсен

2

Припустимо, що в ньому є пошук "регулярних виразів", шукайте \ r \ n. Я вважаю за краще \ r? \ N, оскільки деякі файли не використовують повернення каретки.

EDIT: Дякую за відгук, хто б не проголосував за це. Я довідався, що ... ну нічого, тому що ви не надали відгуків. Чому це неправильно?


1
Я точно не впевнений, чому це не працює, але це не так. Я припускаю, що ця реагексична реалізація (у Блокноті ++) перевіряє одночасно один рядок і ігнорує будь-які нові символи рядка. Це, мабуть, тому вас проголосували.
відвертий хаддер

1
так. regex - це рядок за рядком у блокноті ++, тому ви можете позиційно співставити EOL з $, але не можете шукати / замінювати вирази, які перетинають межі лінії.
Warren P

2

Використовуйте розширений варіант пошуку ( Ctrl+ R) та скористайтеся комбінацією клавіш для клавіш CRLF ( Ctrl+ M), щоб вставити повернення каретки.


Ctrl + R не працював для мене, коли я його спробував. Він вставив у документ дивний контрольний символ, " DC2". Версія для блокнота ++: 7.5.6 (2018-05-19).
Пітер Мортенсен

2

Якщо вам потрібно зробити комплексну заміну повторного вимикання, включаючи \ r \ n, ви можете подолати обмеження шляхом триступеневого підходу:

  1. Замініть все \r\nтегом, скажімо, #GO#→ Перевірити "Розширено", замінити \r\nна#GO#
  2. Виконайте свій регулярний параметр, наприклад, видаливши багаторядковий ICON="*"з закладки html → Перевірте регулярний вимір, замінітьICON=.[^"]+.> by >
  3. Поставте назад \ r \ n → Поставте прапорець "Розширений", замініть #GO#на\r\n

2

Перейдіть до Перегляду -> Показати символ -> Показати весь символ // Він працював на мене


1

Зробіть цю установку. Меню-> Вид-> Показати символ-> зніміть прапорець Показати кінець рядка


1
Це не дає відповіді на початкове запитання. Поясніть, будь ласка, чому ви вважаєте, що це корисний внесок у цю запитання. Також прочитайте сторінки довідкового центру про те, як отримати корисні відповіді.
AdrianHHH

1

Я відкрив файл у Notepad ++ і здійснив заміну за кілька кроків:

  1. Замініть всі "\ r \ n" на "\ r \ n"
  2. Замініть всі "; \ r \ n" на "\ r \ n"
  3. Замініть всі "\ r \ n" на ""

Це ставить усі перерви там, де вони повинні бути, і видаляє ті, що розбивають файл.

Це працювало для мене.


1

Я абсолютно не міг цього зробити в NP v6.9. Мені це було досить просто в Msoft Word (2K).

Відкрийте документ, перейдіть до редагування-> замінити.

Потім у нижній частині вікна пошуку натисніть "більше", потім знайдіть кнопку "Спеціальна", і вони мають кілька речей для вас. Для стилю Dos я використав "абзац". Це cr lf пара у вікні земля.


0

Просто зробіть знахідку і замініть порожнім у полі заміни, щоб все вийшло на один рядок. Потім знайдіть і замініть (у моєму випадку крапкою з двокрапкою) і замініть; \ n

:) -T & C


1
Це відрізняється від існуючих відповідей як?
Усі працівники найважливіші

0

Щоб змінити документ окремих рядків в один рядок, при цьому кожен рядок утворює один запис у списку, розділеному комами:

  1. ctrl+ fвідкрити пошук / замінювач.
  2. Перейдіть на вкладку «Замінити».
  3. Заповніть пункт "Знайти, що таке" з " \r\n".
  4. Заповніть "Замінити" записом на " ," або " ," (залежно від уподобань).
  5. Зніміть прапорець "Зрівняти ціле слово" (важливий біт, який ухиляється від логіки).
  6. Перевірте перемикач "Розширений".
  7. Натисніть кнопку «Замінити все».

Ці кроки обертаються, наприклад

foo bar

бар баз

baz foo

в:

foo bar, bar baz, baz foo

або: (залежно від уподобань)

foo bar, bar baz, baz foo


0

Можливо, ви можете використовувати плагіни TextFX

У TextFX перейдіть до редагування тексту → видалення порожніх рядків


0

Щоб знайти будь-який вид послідовності розриву рядків, використовуйте таку конструкцію регулярного вираження:

\R

Для того, щоб знайти і вибрати послідовні послідовності лінії розриву, додати +після \R: \R+.

Обов’язково ввімкніть режим регулярного вираження :

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

Він відповідає:

  • U+000DU+000A -Послідовність CRLF`
  • U+000A- LINE FEED, НЧ
  • U+000B- LINE TABULATION, В.Т.
  • U+000C- FORM FEED, ФФ
  • U+000D- CARRIAGE RETURN, КР
  • U+0085- NEXT LINE, NEL
  • U+2028 - LINE SEPARATOR
  • U+2029 - PARAGRAPH SEPARATOR
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.