Удалить все строки в Блокноте, кроме строк, содержащих нужное мне слово?
У меня есть текстовый файл, и я хочу, чтобы строки начинались с <Path>
, а все остальные строки удалялись.
Как это сделать?
У меня есть текстовый файл, и я хочу, чтобы строки начинались с <Path>
, а все остальные строки удалялись.
Как это сделать?
Есть простой способ достичь этого. Вам нужно выполнить 2 шага.
Зайдите в меню “Поиск” > “Поиск”… > Выберите вкладку “Отметить”. Активировать регулярные выражения. Поиск ^<Path>
(^
- это начало строки). Не забудьте поставить галочку напротив “Закладка строк” и нажать “Отметить все”
Зайдите в меню “Поиск - Закладка - Удалить немаркированные строки”.
На самом деле это может быть сделано в два этапа, начиная с 6.3. Я думаю, что это можно сделать раньше, так как у меня было 5.9, когда я впервые попробовал это сделать.
Использование поста Стемы в качестве основы для этого ответа. Теперь на один шаг меньше. Отметьте линии и удалите немаркированные. Готово. Следуйте подробным инструкциям.
Меню поиска “Найти”. В диалоговом окне “Поиск” перейдите на вкладку “Пометить”. Активируйте регулярные выражения. Поиск ^<Path>
(^
- это начало строки). Не забудьте поставить галочку напротив “Bookmark lines” и нажать “Mark All”
Меню поиска -> Закладка -> Удалить не помеченные строки.
регекс замена
замена
Использовать ^(?!<Path>).*\r\n
для замены спичек на пустую строку. Обобщенная версия будет ^(?!.*?test).*\r\n
. Это не удалит пустую строку в конце файла. Все остальные строки удаляются, включая несколько последовательных пустых строк.
(?!)
- это отрицательный поиск вверх. ^.*test.*$
выбирает всю строку, которая содержит запрашиваемый текст.
[\r\n]{2,}
совпадает с любой \r\n
, которая встречается более одного раза, когда это строка Windows New. если у вас Linux или другая операционная система, вам может понадобиться с этим повозиться. вторая - заменить ее на одну строку возврата.
Мне кажется, что самый простой способ - это просто воспользоваться функцией “Найти все в текущем документе”, а затем либо скопировать результаты в новый файл, либо выбрать все и заменить в текущем.
Это приведет к тому, что все строки, содержащие ваш текст, будут найдены и перечислены внизу. Просто щелкните правой кнопкой мыши по результату поиска и скопируйте / вставьте.
Зайти в меню Search -> Find… -> Активировать регулярные выражения. Поиск “^Path” (^ - это начало строки).
Нажмите кнопку “Найти все в текущем документе”.
Появится окно “Найти результат” со всеми строками детали. Выберите их копирование/вставку на новую вкладку в блокноте.
На этой новой вкладке выберите: меню Search -> Replace… -> Активировать регулярные выражения.
В поле “Поиск чего:” используйте шаблон: “Строка \d+: ”. Оставить поле “Заменить на:” пустым.
Нажмите кнопку “Заменить все”.
Если вы на самом деле хотите получить соответствие <Path>
, а не путь к файловой системе, вы можете попробовать это из командной строки, используя Perl:
perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt
Он работал с Strawberry Perl на Windows, так что настройте соответствующим образом, если результаты не те, что вы ожидали.
Это неуклюже, но скопируйте все это в Excel , а затем используйте =IF(LEFT(A1,6)="<Path>",A1,"")
и скопируйте эту формулу до конца. Затем скопируйте это обратно в Блокнот++. Это не идеально, но довольно просто (если у вас есть Excel). Внимание: Это не будет хорошо работать с изогнутыми строками (Excel будет смещать столбцы и т.д.).
С Блокнотом++ нет простого способа делать то, что ты хочешь. Вам нужно либо загрузить программу на компьютер, либо написать сценарий чего-нибудь на VB (я предполагаю, что вы на Windows).
Вы можете делать то, что хотите одним из двух способов с помощью sed. Утилита sed является любимой на http://gnuwin32.sourceforge.net/packages/sed.htm*nix и может быть найдена для Windows у великих людей в GnuWin \ ). Вы загрузите эту программу, а затем выполните свою команду из командной строки.
Удалить все строки, не содержащие :
sed -i '/^<PATH>/!d' file
Печать всех строк, содержащих в новом файле:
sed -n '/^<PATH>/p' file > newfile
Я предлагаю вам использовать печать строк, которые вы хотите в новом файле. Причина этого в том, что вы, вероятно, не получите регексуальное утверждение в первый раз. Утилита 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
или даже больше &007:s в строке поиска.