Як видалити кожен непарний рядок у Блокноті ++?


29

Я намагаюся редагувати документ на 20000 рядків. Я повинен видалити кожен непарний рядок, скажімо, наприклад:

Apple
Monkey
Orange
Lion
fruit
animal

Як я можу видалити всі символи непарних рядків у документі?


що ти маєш на увазі під непарною лінією? Ви маєте на увазі як видалити з цілого документа незвичайне (небажане) слово?
antzshrek

4
Кожен непарний пронумерований рядок, як 1,3,5,7,9,11,13,15 .... так далі.
Нітін N

1
Спробуйте замінити новим рядком (regexp): [\ n. + \ N]
Art Gertner

@ArtGertner я спробував з виразом його не працює.
Нітін N

1
Я запису дурний макрос: стрілка вниз, стрілка вниз, дель.
chingNotCHing

Відповіді:


23

Ви можете зробити це за допомогою пошуку та заміни:

  • Відкрийте діалогове вікно заміни ( Ctrl+ H)
  • Виберіть "Регулярний вираз"
  • Знайти що: .+\r\n(.+(\r\n|$))
  • Замінити:
    $1
  • Натисніть "Замінити все"

Примітки:

  • Залежно від вашої ОС вам потрібно використовувати \r(старий Mac), \n(Unix, OS X) або \r\n(Windows), щоб відповідати кінці рядка, або просто використовувати, \Rяка повинна працювати скрізь (дякую @Aurel Bílý)
  • \n|$ потрібен, щоб мати правильний результат навіть в кінці файлу
  • За замовчуванням Notepad ++ замінюється від фактичного положення курсору до кінця файла. Обов’язково розмістіть курсор на початку файлу.
    • (Ви також можете встановити прапорець "обгортати", але в цьому випадку він спочатку видалить рядок, в якому знаходиться ваш курсор, а не шукати непарний рядок.)

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


Це майже працює, але він не редагує перший набір непарних пронумерованих рядків, скажімо, від 1 до 15.
Nithin N

Змініть скріншот із більшою прозорістю цього вікна заміни.
Бісвапріо

11
Зауважте, що \rзакінчення рядка зустрічається дуже рідко - воно справді використовувалося в Mac OS, але класичні версії до OS-X. В OS X і далі закінчення рядків є \n, як і будь-які здорові Unix. Також \Rкраще відповідати будь-якому закінченню рядка.
Aurel Bílý

@ AurelBílý Це правда, однак Notepad ++ працює лише у Windows, тому портативність тут не велика проблема.
Роб

18
  • Ctrl+H
  • Знайти що: .+\R(.+)
  • Замінити: $1
  • Replace all

Пояснення:

.+      : 1 or more any character but newline
\R      : any kind of linebreak (ie. \r, \n, \r\n)
(       : start group 1
  .+    : 1 or more any character but newline
)       : end group 1
  • Перевірте регулярне вираження
  • НЕ ПЕРЕВІРИТЕ . matches newline

Результат для наведеного прикладу:

Monkey
Lion
animal

@NithinN: Будьте в курсі, що прийнята відповідь не працює з файлами Linux (тобто. Linebreak \n)
Toto

7
  1. Відкрийте файл і покладіть текстовий курсор на початку першого рядка.
  2. Меню → МакросПочати запис
  3. Натисніть Endклавішу на клавіатурі
  4. Shift+ Home, тоbackspace
  5. Down
  6. Backspace
  7. Down
  8. Меню → МакросЗупинити запис
  9. Меню → МакросЗапустити кілька разів макрос → Позначте пункт Запустити до кінця файлу
  10. Клацніть Run

В основному виконайте дію один раз, щоб видалити непарний рядок, а потім отримайте програму для повторення дії до кінця файлу. Це можна використовувати для вирішення багатьох проблем!


1

Я щойно перевірив на ПК свого колеги, хто фактично використовує Notepad ++. Спробуйте це:

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


Мені здається, це видаляє парні рядки (2,4,6 ...), а не непарні.
Máté Juhász

1
Це правильно. Однак видалити рівні рядки простіше, і проблему можна вирішити, додавши порожній рядок на початку файлу
Art Gertner

@ArtGertner слід \ r \ n. + \ R \ n замінити на \ r \ n
chingNotCHing

@chingNotCHing, хороший! Я оновив свою відповідь
Art Gertner

@ArtGertner Як ви вказали, він працює лише для рівних ліній. Але для великого набору даних це не редагування першого набору даних, скажімо, з 1-15-го рядка.
Нітін N
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.