Notepad удалить строки короче
есть ли способ в Notepad++ удалить каждую другую или N-ю строку? У меня огромный список данных, и мне нужно уменьшить размер.
сами данные не так важны, и из списка из 10 000 элементов мне нужен только выбор из 5 000
Я думаю, что это странная идея, чтобы попытаться сделать с Notepad++, но мне нравится вызов, поэтому я решил дать ему спину.
Откройте меню заменить, заполните ([^\n]*\n)[^\n]*\n в поле" найти что " и в поле "заменить на" коробке. Затем выберите регулярное выражение для режима поиска, нажмите заменить все, и каждая вторая строка будет удалена.
(Это было совсем не сложно - все, что мне нужно было сделать, это обновить устаревшую установку Notepad++.)
вы можете попробовать использовать макрос.
- начать запись макроса
- нажмите вниз n-раз
- Нажмите Shift + End
- нажмите клавишу удалить два раза
- остановить запись макрос
- запустить макрос до конца файла
Я думаю, вы можете сделать это с awk, если вы находитесь на платформе стиля unix:
NR-номер строки, поэтому это просто скажет: "если строка делится на 2, вставьте ее в newfile."
Если вы находитесь в windows, я думаю, что ответ здесь будет работать:
Я сам столкнулся с этим вопросом. Что сработало для меня, также используя функцию Find / Replace, это:
- Ctrl F и перейти к замене
- в режиме поиска выберите " Extended (\n, \r, \t .. )"
- найти что: \n\n
- заменить на: \n
- Заменить Все
Я не думаю, что в Notepad++ есть функция, которая автоматически удалит каждую другую (или каждую N-ю) строку, но если вы написали короткую программу преобразования, это займет всего несколько минут.
псевдокод будет выглядеть примерно так:
это не совсем ответ на ваш вопрос, но я надеюсь, что это поможет.
другой способ, вы можете использовать командную строку cc.dl 5.5 ConyEdit (плагин), чтобы удалить пятую строку каждой группы, пять строк для каждой группы.
У меня есть различные файлы журналов, которые я хочу фильтровать с помощью функции, подобной grep.
Как я это делал раньше:
- Отметьте слово/строку
- Поиск/Отметить
- включить опцию "Строка закладок"
- пометить все
- Закрыть
- «Удалить неотмеченные строки»
Для этой процедуры я записал макрос и сохранил его в shortcuts.xml :
Можно ли заменить строку "IM1 001" подстановочным знаком или фактическим отмеченным текстом, а затем просто нажать комбинацию, чтобы выполнить задание?
Я не думаю, что макросы Notepad++ поддерживают переменные. Может быть плагин, который мог бы помочь (возможно, NPPExec), но если вам нужно выполнять эту задачу регулярно, возможно, стоит вместо этого собрать сценарий PowerShell.
Спасибо, я задам этот вопрос в сообществе Notepad++, возможно, они смогут помочь.
Скрипт Powershell не то, что мне нужно. У меня часто есть выходные файлы журналов, которые копируются в блокнот ++. Затем я хочу отфильтровать строки по определенным словам или терминам.
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 4
Searches recorded as macros always have all of their parameters hard-wired.
В EmEditor есть функция закладок, которая может это сделать. В диалоговом окне Находить вы вводите свою строку, затем вместо «Найти» нажимаете «Закладка». Затем Правка > Закладки > Этот документ, и вы можете удалить или извлечь в новый файл или даже инвертировать отмеченные строки, а затем перейти к удалению или извлечению и т. д.
Было любопытно узнать, насколько возможно что-то подобное с PowerShell (о котором я почти ничего не знаю), и придумал следующее. Это перезаписывает исходный файл, и я провел очень быстрый тест, поэтому, очевидно, не используйте его с чем-либо, для чего нет резервной копии :)
Сценарий PowerShell (removelines.ps1):
Команда для сохранения в поле «Выполнить» в Notepad++:
Когда вы запустите его (с файлом, который вы хотите изменить, открытым/на текущей вкладке), вам будет предложено ввести строку поиска. После его запуска Notepad++ предложит перезагрузить файл, в котором теперь должны отсутствовать все строки, не содержащие строку поиска.
Я не уверен, что вы когда-либо получали удовлетворительный ответ на этот вопрос, но, судя по его звукам, вы могли бы сделать это полностью в блокноте ++ с помощью поиска и замены регулярных выражений.
Например, с учетом источника:
Заменять: ^(?:(?!IM1 001).)*?$\R* (где IM1 001 — текст/выражение, которое вы ищете)
С участием: ничегоИ все, что останется, это строки с заданной вами поисковой фразой:
Если вы хотите сохранить пустые строки, вы можете просто удалить \R* в конце выражения:
Ладно, это странно. Эй, JonM, я добавил твой вопрос в закладки в обмене головоломками, ожидая правильного ответа, но его нет, поэтому мне очень любопытен ответ. Это вопрос "какое слово. ". Я пытался найти вас в чате, но безуспешно. Пожалуйста, дайте мне ответ через тег спойлера или аналогичный, чтобы я мог искупить свою вину. Этот комментарий является супер спамом, поэтому я удалю его через пару часов. Простите за неудобства
Я знаю, что это требует некоторого регулярного выражения, но я не лучший в этом!
То, что я пытался:
Другие, которые я пробовал, были просто попытками с \n\r и т. Д. Опять же, не лучшим образом с регулярным выражением. Вышеупомянутая попытка, я думал, была довольно близка.
3 ответа
Поскольку ОП говорит, что ответ Сахила «работает как очарование», я предполагаю, что текст в блокноте ++ заканчивался символом новой строки. В противном случае ответы Сахила и Тото не будут соответствовать окончательному набору слов.
Шаблон Сахиля: (.*?)\n(.*?)\n(.*)\n выполняет 79 шагов *, если текст заканчивается на \n ; в противном случае 112 шагов и не удается.
Его заменяющее выражение без необходимости использует две ссылки на группы захвата.Шаблон Тото: ((?:[^\r\n]+\R))[^\r\n]+\R делает 39 шагов *, если текст заканчивается на \n ; в противном случае 173 шага и не удается. Его выражение замены использует одну ссылку на группу захвата.
Мой предложенный шаблон будет выполнять только 25 шагов и не будет использовать группы захвата. Ваш текст представляет собой серию небелых символов, за которыми следуют белые символы, поэтому ниже приведен самый короткий и точный шаблон, обеспечивающий максимальную скорость:
Этот шаблон должен быть в паре с пустой заменой.
\S означает «символ без пробелов»
\s означает «пробел»
+ означает одно или несколько из предыдущего совпадения
* означает ноль или более из предыдущего совпадения
\K означает, что продолжайте матч отсюда* в последнем \s позволяет завершить последние 3 строки текста без завершающего символа новой строки. При выполнении такой операции над большим пакетом текста важно убедиться, что замена работает правильно для всего текста и не осталось нежелательных подстрок.
Другим способом, вы можете использовать плагин ConyEdit для этого. Используйте командную строку cc.dl 3.3 , чтобы удалить третью строку каждой группы, по 3 строки для каждой группы.
ОТВЕТЫ
Ответ 1
Вы можете использовать меню Поиск → Заменить. ( Ctrl + H).
Ответ 2
Notepad ++ v6.5
Поиск меню → Найти. → Отметить вкладку → Найти, что: текст поиска, проверить Bookmark Line, затем Отметить все. Это приведет к закладке всех строк с поисковым запросом, вы увидите синие круги на краю.
Затем Поиск меню → Закладка → Удалить закладки.. Это приведет к удалению всех отмеченных строк.
Вы также можете использовать регулярное выражение для поиска. Этот метод не приведет к пустой строке, такой как Джон, и фактически удалит строку.
Старые версии
- Поиск меню → Найти. → Найти, что: текст поиска, проверить Закладка и нажать Найти Все.
- Затем Поиск → Вкладка → Удалить закладки в строках
Ответ 3
Вот способ, который полностью удаляет строки, содержащие "YOURTEXT":
- Откройте диалоговое окно "Заменить"
- Введите следующую строку поиска: .*YOURTEXT.*[\r]?[\n] (замените текст YOURTEXT текстом)
- Включить "Регулярное выражение"
- Отключить ". соответствует новой строке"
Данное регулярное выражение соответствует как концам строк Windows, так и Unix.
Если ваш текст содержит символы, которые имеют особое значение для регулярного выражения, например обратную косую черту, вам нужно будет их избежать.
Ответ 4
Это самая распространенная функция Notepad++, которую я использую для обновления своего кода.
Все, что вам нужно сделать, это:
- Выберите общую строку, которая присутствует во всех строках.
- Нажмите Ctrl + F
- На вкладке "Mark" вставьте повторяющуюся строку и установите флажок "Bookmark line".
- Нажмите на Mark All
- Теперь перейдите в меню Поиск → Закладка → Удалить отмеченные строки
Вы можете обратиться к этой ссылке для пояснения.
Ответ 5
Ответ Джейкоба на Джона Т отлично работает, чтобы удалить всю строку, и вы можете найти в файлах с этим. Обязательно проверьте "Регулярное выражение" внизу.
Ответ 6
Ответ 7
Ответ 8
Хотя эта статья гордо и названа Регулярные выражения в notepad++, это скорее шпаргалка, для самого себя, а также может быть кому-то ещё, пригодится. Смысл её таков, что иногда мне бывает что-то поменять, добавить или удалить в тексте. Как и всякий ленивый человек, я пытаюсь этот процесс облегчить, ускорить, короче оптимизировать и автоматизировать.
Другими совами, я где-то когда-то узнал про регулярные выражения, попробовал, у меня получилось и мне понравилось. Теперь сталкиваясь с необходимостью указанной в первом абзаце, я начинаю вспоминать, а как я это сделал? Естественно благополучно не вспомнив, начинаю «лопатить» интернет в поисках ответа на свои «хотелки».
Навигация по тексту
Основные регулярки. — Точка представляет один любой символ
^ — Начало строки
$ — Конец строки
\S — Не Пробел
\w — буква, цифра или подчёркивание _
\d — Любая цифра
\D — Любой символ, но не цифра
9 — Любая цифра
[a-z] — Любая буква от a до z (весь латинский набор символов) в нижнем регистре
[A-Z] — Любая буква от a до z в ВЕРХНЕМ регистре
[a-zA-Z] — Любая буква от a до z в любом регистре
[a-Z] — То же самое
* — «Повторитель». Означает, что предшествующий символ может повторяться (0 или более раз)
.* — Абсолютно любой набор символов. Например, условие
.*
— найдет все что между тегами(^.*$) — Любой текст между началом и концом строки
(54*.) — ищет любые двухзначные в данном случае цифры
\n\r — Ищет пустые строки. Вроде как если оставить пустым окно «Заменить» то удаляет пустые строки, но можно поставить вот это \0
^\s*$ — Ищет пустые строки содержащие пробел.
^[ ]*$ — Ищет пустые строки содержащие пробел.
Добавление знаков в начале и конце строки, абзаца
Допустим, необходимо некий текст, скопированный например из ворда, заключить в теги
Ставим в «найти» — (^.*$) ищет соответственно начало и конец строки.
Ставим в «заменить на» — \1 и то, что нужно вставить в начало и конец строки, у нас в примере это
Выражение будет иметь следующий вид:
\1
. Как показано на рисунке 1. В дальнейшем нет нужды в рисунках, так они будут идентичны этому, с той лишь разницей, что выражения, там будут другие.*** Прим. Добавление круглых скобок () в поле найти, обязательно, иначе будет убирать текст.
Добавление знаков в начале или в конце строки, абзаца
Допустим, необходимо некий текст, скопированный например из ворда, заключить в одиночный тег это тег перевода строки, не всегда удобно и нужно оборачивать его в теги . Ну я так считаю, возможно и неправильно, но допустим это стих, песня или анекдот, где все строчки короткие и каждая строка новая, мне нравится тут одиночный тег больше.
Для этого в поле «найти» вводим символ $ Конец строки, а в поле «заменить на» вводим нужный нам тег или что то другое, в данном случае тег не забывая добавить \1, то есть выглядит это так — \1 . В данном случае мы только добавляем нужный нам тег, поэтому в круглые скобки в общем то, не нужны, но если поставить, также будет заменять корректно.
Аналогично можно добавлять что-нибудь и в начале строки, заменив в поле найти на символ ^ начала строки, наверное …
Как то возникла у меня необходимость удалить пустые строки в документах, и не только просто пустые но и содержащие пробелы. Всё бы ничего если бы это был один-два файла, есть в Notepad++ в операциях со строками такие функции как «Удалить пустые строки» и «Удалить пустые строки (Содер. символы Пробел)».
Но вот беда, мне нужно было это сделать где-то примерно в 25-28 файлах, и в принципе, это тоже нетрудно. Но, мы, же знаем регулярные выражения, подумал я и решил, процесс облегчить. Итак, суть в том, что в блокноте в «Поиске и Замена» есть кнопочка, «Заменить во всех Открытых документах», вот не неё и была вся моя надежда.
Поискав в интернете, долго ли коротко ли, отовсюду понемножку нашел информацию как это сделать, попробовал – получилось.
Поэтому пишу здесь, чтобы самому не забыть, и быть может другим подсказать.
Удаление пустых строк
В поле «найти» вводим \n\r — ищет пустые строки, вроде как если оставить пустым окно «Заменить» то удаляет пустые строки, но можно поставить вот это \0. Ну а далее всё просто открываем все файлы, которые нам нужно «почистить», вводим символы и жмём «Заменить во всех Открытых документах».
Результат: Во всех открытых документах, пустые строки, не содержащих пробелов удалены.
Удаление пустых строк, содержащих символы пробел
Тут работа происходит в два этапа, сначала удаляем символы Пробел, а потом пустые строки как это сделать указано в пункте 1.
Поэтому если есть и просто пустые строки и строки, содержащие символы Пробел, то рекомендую начать сразу с этого пункта, работы просто меньше, в смысле, сначала очищаем пустые строки от пробелов, а затем удаляем все строки, ведь теперь, хоть их и стало больше но они все «чистые».
В поле «найти» вводим ^[ ]*$ или ^\s*$ — ищет пустые строки содержащие пробел (не знаю, может у кого-то с одним не получится набором, попробуйте с другим), аналогично вроде как, если оставить пустым окно «Заменить» то удаляет пробелы, но можно поставить вот это \0. Ну а далее всё просто открываем все файлы, которые нам нужно «почистить», вводим символы и жмём «Заменить во всех Открытых документах».
Результат: Во всех открытых документах, пустые строки очищены от пробелов.
Читайте также: