Вопрос: Удалить все строки в Notepad ++, кроме строк, содержащих нужное мне слово?


У меня есть текстовый файл и вы хотите, чтобы строки начинались с <Path>, и удалите все остальные строки.

Как мне это сделать?


174
2018-05-29 15:05


Источник


Связанный: stackoverflow.com/questions/8264391/... - Cees Timmerman
Плагин LineFilter2 также прост в использовании. - Karsten


Ответы:


Существует простой способ достичь этого. Вам необходимо выполнить 3 шага.

  1. Перейдите в меню «Поиск»> «Найти ...»> «Вкладка« Отметить ». Активируйте регулярные выражения. Искать ^<Path> (^ для начала строки). Не забудьте проверить «закладки линий» и нажмите «Отметить все»,

    ==> Все строки, которые вы хотите сохранить, получили закладку

  2. Перейдите в меню «Поиск - закладка - обратная закладка»

    ==> Вся строка, которую вы хотите удалить, отмечена закладкой.

  3. Перейдите в меню «Поиск - Закладка - Удалить закладки»

    ==> Все закладки выделены.


252
2018-06-03 20:23



+1. Ницца, не знал об этом. Существуют также опции «Удалить немаркированные строки» или «Вырезать / копировать отмеченные строки», что может сэкономить некоторое время. - deizel
Сначала у меня были проблемы, потому что моя версия (6.2.3) Notepad ++ не имеет пункта меню «Mark Tab». Вместо этого вам нужно перейти в «Поиск» -> «Найти ...» -> щелкнуть по вкладке «Марк». И вам больше не нужно обращать закладки. В Notepad ++ теперь есть «Удалить немаркированные строки». Но ваш совет мне очень помог! Благодаря! - Adam
Вы можете пропустить шаг 2, потому что это (по крайней мере с версии v6.4.5) можно выбрать «Удалить немаркированные строки». - Nailuj
Я использую Notepad ++ так долго, и я никогда не знал, что такое «Закладки» раньше. Удивительно, насколько мощный этот инструмент и как мало я знаю об этом. - Danubian Sailor
Вы гениальный. это просто еще один шокирующий пример того, как познакомиться с инструментом, который вы используете на самом деле. - Marcello Grechi Lins


Это можно сделать в два этапа с 6.3. Я думаю, что это можно сделать раньше, чем у меня было 5.9, когда я впервые попробовал это.

В качестве основы этого ответа можно использовать пост stema. Сейчас еще один шаг. Отметьте линии и удалите немаркированные строки. Готово. Ниже приводятся подробные инструкции.

  1. Меню поиска «Найти». В диалоговом окне «Найти» перейдите на вкладку «Отметить». Активируйте регулярные выражения. Найти ^ (^ для начала строки). Не забудьте проверить «закладки линий» и нажмите «Отметить все»,

    ==> Все строки, которые вы хотите сохранить, получили закладку

  2. Меню поиска -> Вкладка -> Удалить немаркированные линии.

    ==> Все NON Замещенные строки удаляются.


56
2018-02-27 16:03



Это заняло у меня 10 секунд, в то время как другое решение заняло у меня> 20 секунд. Спасибо! - Black


Очистить только регулярное выражение

Двухэтапный вариант

  1. regex replace

    (?!^.*test.*$)^.+
    

    замените тест на требуемый текст

  2. замещать

    [\r\n]{2,}
    

    с \r\n

Вариант с одним шагом

использование ^(?!<Path>).*\r\n для замены совпадений с пустой строкой. Обобщенная версия ^(?!.*?test).*\r\n, Это не приведет к удалению пустой строки в конце файла. Все остальные строки удаляются, включая несколько последовательных пустых строк.

Объяснение:

  1. (?!) это негативный взгляд. ^.*test.*$  выбирает всю строку, содержащую запрошенный текст.

  2. [\r\n]{2,} соответствует любому \r\n это происходит больше, чем когда-то это линия Windows New. если у вас есть Linux или другая операционная система, вам может понадобиться с этим справиться. второй - заменить его на одну линию возврата.


25
2017-07-08 16:51



Примечание для народов: иногда регулярное выражение с концом строки (EOL) «не работает». \r\n EOL, упомянутый в сообщении, - это то, что использует Windows, и поэтому может или не может быть тем, что вы ищете. Часто в средах Linux это просто \n, или в средах Mac просто \r, поэтому, если вы вытащите файл из него, это не будет EOL в стиле Windows. Однако, если вы загружаетесь через триггеры режима FileZilla и ASCII, это может изменить их вернуться в Windows EOL (как \n в \r\n). Поэтому, если regex не работает, проверьте стиль EOL, перейдя в «Вид> Показать символы> Показать конец строки». CR = \r, LF = \n, - dhaupin


Мне кажется, что самый простой способ - просто использовать функцию «Найти все в текущем документе», а затем либо скопировать результаты в новый файл, либо выбрать все и заменить в текущем.

Это найдет все строки, содержащие ваш текст, и перечислит их внизу. Просто щелкните правой кнопкой мыши по результату поиска и скопируйте / вставьте.


5
2017-12-17 11:43



Вам нужно удалить номера строк, заменив \tLine [\d]*: , Все еще отличный ответ. - Noumenon


Перейти в меню Поиск -> Найти... -> Активировать регулярные выражения. Найти "^Дорожка"(^ для начала строки).

Нажмите кнопку «Найти все в текущем документе».

Окно «Найти результат» появится со всеми строками шаблона. Выберите копию / вставьте их на новую вкладку в Notepad ++.

На этой новой вкладке вы попали в меню Поиск -> Заменить ... -> Активировать регулярные выражения.

В поле «Найти что:» используйте шаблон: «Линия \ d +:». Оставьте поле «Заменить на:» пустым.

Нажмите кнопку «Заменить все».


4
2018-06-21 16:36





Если вы действительно хотите совместить <Path> а не путь к файловой системе, вы можете попробовать это из командной строки с помощью Perl:

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

Он работал с Strawberry Perl в Windows, поэтому настройте соответствующим образом, если результаты не соответствуют ожидаемым.


3
2018-05-30 01:02





Это неуклюжий, но скопируйте все это на превосходить, а затем использовать =IF(LEFT(A1,6)="<Path>",A1,"") и скопируйте эту формулу до конца. Затем скопируйте его обратно в Notepad ++. Это не идеально, но это довольно легко (если у вас есть Excel). Предупреждение: он не будет работать с отступом (Excel сдвинет столбцы и т. Д.).


3
2018-05-29 18:07



Когда есть несколько способов прямого обращения к этой задаче, зачем вы хотите уничтожить ее в другое приложение, обработать там и передать обратно? - Baldrickk