+1. Хорошо, не знал об этом. Есть также варианты «Удалить непомеченные линии» или «Вырезать / копировать отмеченные линии», которые могут сэкономить некоторое время.
Деизель
6
Сначала у меня были проблемы, потому что моя версия (6.2.3) Notepad ++ не имеет пункта меню с именем «Mark Tab». Вместо этого вам нужно перейти в «Поиск» -> «Найти ...» -> нажать на вкладку «Отметить». И вам больше не нужно инвертировать закладки. Notepad ++ теперь имеет «Удалить неотмеченные строки». Но твой совет мне очень помог! Спасибо!
aakoch
22
Вы можете пропустить шаг 2, потому что можно (по крайней мере, начиная с v6.4.5) выбрать «Удалить непомеченные линии».
Джулиан,
4
Я так долго пользуюсь Notepad ++ и никогда раньше не знал, что такое «Закладки». Удивительно, насколько мощный этот инструмент и как мало я знаю о нем.
Дунайский моряк
Вы гениальный. это еще один шокирующий пример того, как узнать инструмент, который вы используете на самом деле.
Марчелло Гречи Линс
67
На самом деле это можно сделать в два этапа, начиная с 6.3. Я думаю, что это может быть сделано раньше, чем у меня было 5,9, когда я впервые попробовал.
Использование сообщения Stema в качестве основы для этого ответа. Теперь на шаг меньше. Отметьте линии и удалите неотмеченные линии. Готово. Подробные инструкции следуют.
Поиск меню «Найти». В диалоговом окне «Найти» перейдите на вкладку «Отметить». Активируйте регулярные выражения. Поиск ^<Path>( ^для начала строки). Не забудьте проверить «Закладки линий» и нажать «Отметить все»
==> Все строки, которые вы хотите сохранить, теперь имеют закладку
Это заняло у меня 10 секунд, в то время как другое решение заняло у меня> 20 секунд. Спасибо!
Чёрный
Мне не нужно было добавлять ^в мой поисковый запрос или использовать регулярные выражения. Надеюсь, это кому-нибудь поможет.
sa_leinad
29
Чистое регулярное выражение только решение
Двухступенчатый вариант
регулярное выражение заменить
(?!^.*test.*$)^.+
замените тест запрошенным текстом
замещать
[\r\n]{2,}
с участием \r\n
Одношаговый вариант
Используйте ^(?!<Path>).*\r\nдля замены совпадений пустой строкой. Обобщенная версия будет ^(?!.*?test).*\r\n. Это не удалит пустую строку в конце файла. Все остальные строки удаляются, включая несколько последовательных пустых строк.
[\r\n]{2,}соответствует любому \r\n, встречающемуся более чем один раз, когда это строка Windows New. если у вас Linux или другая операционная система, вам может понадобиться возиться с этим. во-вторых, заменить его одной обратной строкой.
Примечание для людей: иногда регулярное выражение с концом строки (EOL) «не работает». \r\nEOL упоминается в посте , что использует Windows , и , следовательно , может или не может быть то , что вы ищете. Часто в средах Linux это просто \nили в средах Mac просто \r, так что если вы извлекаете файл из одного из них, это не будет EOL в стиле Windows. Однако, если вы загружаете через FileZilla и триггеры режима ASCII, он может изменить их обратно на Windows EOL (как \nв \r\n). Поэтому, если регулярное выражение не работает, проверьте стиль EOL, выбрав «Вид> Показать символы> Показать конец строки». CR = \r. LF = \n.
Дхаупин
5
Мне кажется, что самый простой способ - просто использовать функцию «Найти все в текущем документе», а затем либо скопировать результаты в новый файл, либо выбрать все и заменить в текущем.
Это позволит найти все строки, содержащие ваш текст, и перечислить их внизу. Просто щелкните правой кнопкой мыши на результат поиска и скопируйте / вставьте.
Это неуклюже, но скопируйте все это в Excel , а затем используйте =IF(LEFT(A1,6)="<Path>",A1,"")и скопируйте эту формулу до конца. Затем скопируйте это обратно в Notepad ++. Это не идеально, но довольно просто (если у вас есть Excel). Предупреждение: он не будет хорошо работать с отступами (Excel сместит столбцы и т. Д.).
Если есть несколько способов выполнить эту задачу напрямую, зачем вам деструктивно копировать в другое приложение, обрабатывать его и возвращать обратно?
Baldrickk
1
Нет простого способа сделать то, что вы хотите с помощью 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'. Если бы я подал запрос на экранирование символа /, команда выдаст ошибку. Вы можете экранировать специальный символ (такой как /) с помощью символа обратной косой черты \.
Это может быть старый ответ, но так как на самом деле он невероятно имеет 2 голоса (-1 теперь от меня), он хотел прокомментировать не только то, насколько он ошибочен, но и повторить в единственной командной операции, как я просто (снова) взял строку> 100k файл журнала до 34 строк, содержащих одно слово (или фразу), в этом случае просто «ошибка» менее чем за 3 секунды, просто поместив это регулярное выражение в НАЙТИ ЧТО: ^ (?!. *? error). * \ r \ n и оставив поле REPLACE WITH пустым, НЕ выбирайте «. соответствия новой строки» и нажмите «ЗАМЕНИТЬ ВСЕ». Да, я тоже люблю sed и awk, но говорить, что АЭС не может этого сделать, - просто ложь.
Добро пожаловать в Супер пользователя! Хотите объяснить это тем, кто может не знать, что делает каждый бит регулярного выражения? :)
bertieb
0
Используйте 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 в строке поиска.
Ответы:
Существует простой способ добиться этого. Вам нужно выполнить 3 шага.
Зайдите в меню «Поиск»> «Найти ...»> выберите вкладку «Отметить». Активируйте регулярные выражения. Поиск
^<Path>
(^
для начала строки). Не забудьте проверить «Закладки линий» и нажать «Отметить все»==> Все строки, которые вы хотите сохранить, имеют закладки
Зайдите в меню «Поиск - Закладка - Обратная закладка»
==> Все строки, которые вы хотите удалить, добавлены в закладки.
Зайдите в меню «Поиск - Закладка - Удалить отмеченные строки»
==> Все отмеченные строки будут удалены.
источник
На самом деле это можно сделать в два этапа, начиная с 6.3. Я думаю, что это может быть сделано раньше, чем у меня было 5,9, когда я впервые попробовал.
Использование сообщения Stema в качестве основы для этого ответа. Теперь на шаг меньше. Отметьте линии и удалите неотмеченные линии. Готово. Подробные инструкции следуют.
Поиск меню «Найти». В диалоговом окне «Найти» перейдите на вкладку «Отметить». Активируйте регулярные выражения. Поиск
^<Path>
(^
для начала строки). Не забудьте проверить «Закладки линий» и нажать «Отметить все»==> Все строки, которые вы хотите сохранить, теперь имеют закладку
Меню поиска -> Закладка -> Удалить неотмеченные строки.
==> Все не отмеченные закладкой строки будут удалены.
источник
^
в мой поисковый запрос или использовать регулярные выражения. Надеюсь, это кому-нибудь поможет.Чистое регулярное выражение только решение
Двухступенчатый вариант
регулярное выражение заменить
замените тест запрошенным текстом
замещать
с участием
\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:Он работал со 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 в строке поиска.источник