Ответы:
Существует простой способ добиться этого. Вам нужно выполнить 3 шага.
Зайдите в меню «Поиск»> «Найти ...»> выберите вкладку «Отметить». Активируйте регулярные выражения. Поиск ^<Path>
( ^
для начала строки). Не забудьте проверить «Закладки линий» и нажать «Отметить все»
==> Все строки, которые вы хотите сохранить, имеют закладки
Зайдите в меню «Поиск - Закладка - Обратная закладка»
==> Все строки, которые вы хотите удалить, добавлены в закладки.
Зайдите в меню «Поиск - Закладка - Удалить отмеченные строки»
==> Все отмеченные строки будут удалены.
На самом деле это можно сделать в два этапа, начиная с 6.3. Я думаю, что это может быть сделано раньше, чем у меня было 5,9, когда я впервые попробовал.
Использование сообщения Stema в качестве основы для этого ответа. Теперь на шаг меньше. Отметьте линии и удалите неотмеченные линии. Готово. Подробные инструкции следуют.
Поиск меню «Найти». В диалоговом окне «Найти» перейдите на вкладку «Отметить». Активируйте регулярные выражения. Поиск ^<Path>
( ^
для начала строки). Не забудьте проверить «Закладки линий» и нажать «Отметить все»
==> Все строки, которые вы хотите сохранить, теперь имеют закладку
Меню поиска -> Закладка -> Удалить неотмеченные строки.
==> Все не отмеченные закладкой строки будут удалены.
^
в мой поисковый запрос или использовать регулярные выражения. Надеюсь, это кому-нибудь поможет.
регулярное выражение заменить
(?!^.*test.*$)^.+
замените тест запрошенным текстом
замещать
[\r\n]{2,}
с участием \r\n
Используйте ^(?!<Path>).*\r\n
для замены совпадений пустой строкой. Обобщенная версия будет ^(?!.*?test).*\r\n
. Это не удалит пустую строку в конце файла. Все остальные строки удаляются, включая несколько последовательных пустых строк.
(?!)
это отрицательный взгляд вверх. ^.*test.*$
выделяет всю строку, содержащую запрашиваемый текст.
[\r\n]{2,}
соответствует любому \r\n
, встречающемуся более чем один раз, когда это строка Windows New. если у вас Linux или другая операционная система, вам может понадобиться возиться с этим. во-вторых, заменить его одной обратной строкой.
\r\n
EOL упоминается в посте , что использует Windows , и , следовательно , может или не может быть то , что вы ищете. Часто в средах Linux это просто \n
или в средах Mac просто \r
, так что если вы извлекаете файл из одного из них, это не будет EOL в стиле Windows. Однако, если вы загружаете через FileZilla и триггеры режима ASCII, он может изменить их обратно на Windows EOL (как \n
в \r\n
). Поэтому, если регулярное выражение не работает, проверьте стиль EOL, выбрав «Вид> Показать символы> Показать конец строки». CR = \r
. LF = \n
.
Мне кажется, что самый простой способ - просто использовать функцию «Найти все в текущем документе», а затем либо скопировать результаты в новый файл, либо выбрать все и заменить в текущем.
Это позволит найти все строки, содержащие ваш текст, и перечислить их внизу. Просто щелкните правой кнопкой мыши на результат поиска и скопируйте / вставьте.
\tLine [\d]*:
. Все еще отличный ответ.
Зайдите в меню Поиск -> Найти ... -> Активируйте регулярные выражения. Поиск «^ Путь » (^ для начала строки).
Нажмите на кнопку «Найти все в текущем документе».
Появится окно «Найти результат» со всеми линиями шаблона. Выберите скопировать / вставить их на новую вкладку в Notepad ++.
В этой новой вкладке попали: меню Поиск -> Заменить - -> Активировать регулярные выражения.
В поле «Найти что:» используйте шаблон: «Линия \ d +:». Оставьте поле «Заменить на» пустым.
Нажмите на кнопку «Заменить все».
Если вы действительно хотите сопоставить, <Path>
а не путь к файловой системе, вы можете попробовать это из командной строки, используя Perl:
perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt
Он работал со Strawberry Perl в Windows, поэтому настройте его соответствующим образом, если результаты не соответствуют ожидаемым.
Это неуклюже, но скопируйте все это в Excel , а затем используйте =IF(LEFT(A1,6)="<Path>",A1,"")
и скопируйте эту формулу до конца. Затем скопируйте это обратно в Notepad ++. Это не идеально, но довольно просто (если у вас есть Excel). Предупреждение: он не будет хорошо работать с отступами (Excel сместит столбцы и т. Д.).
Нет простого способа сделать то, что вы хотите с помощью Notepad ++. Вам нужно будет либо загрузить программу на свой компьютер, либо написать скрипт на VB (я полагаю, вы работаете в Windows).
Вы можете делать то, что хотите, одним из двух способов с помощью sed. Утилита sed является любимой в * nix и может быть найдена для Windows от великих людей из GnuWin ( http://gnuwin32.sourceforge.net/packages/sed.htm ). Вы должны загрузить эту программу, а затем запустить команду из командной строки.
Удалить все строки, не содержащие:
sed -i '/^<PATH>/!d' file
Вывести все строки, содержащие в новый файл:
sed -n '/^<PATH>/p' file > newfile
Я предлагаю вам использовать печать строк, которые вы хотите в новый файл. Причина этого в том, что вы, вероятно, не получите выражение regex в первый раз. Утилита sed использует базовый синтаксис регулярных выражений (см. Ссылку на http://www.regular-expressions.info/reference.html ). Если это что-то вроде пути * nix (/ var / www), то вам нужно экранировать символ /, чтобы ваше регулярное выражение работало.
Пример: sed -n '/^\/var\/www/p' file > newfile
это распечатает все строки, которые начинаются с '/ var / www'. Если бы я подал запрос на экранирование символа /, команда выдаст ошибку. Вы можете экранировать специальный символ (такой как /) с помощью символа обратной косой черты \.
Используйте Search-> Replace и введите регулярное выражение как ^[^ ].*
и замените все на пустую строку, используя Regular expression
. Следующий шаг - найти пустые строки в поисках \n\n
замены с \n
использованием Extended
несколько раз до 0 occurrences were found.
(используйте \r\n\r\n
и в \r\n
зависимости от формата файла). Если у вас очень много пустых строк в строке, это быстрее использовать \n\n\n\n\n\n\n
или даже больше \n
: s в строке поиска.