Regex: Удалить строки, содержащие "help" и т.д.

У меня есть длинный документ команд. Используя Notepad++ или regex, я хочу удалить все строки, содержащие "help", включая keyboard_help и т.д.

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

Ответ 1

Это также возможно с Notepad++:

  • Перейдите в меню поиска, Ctrl + F и откройте вкладку Mark.
  • Проверьте строку "Закладка" (если вкладка "Отметка" не обновлена до текущей версии)

  • Введите условие поиска и нажмите "Отметить все"

    • Все строки, содержащие поисковый запрос, добавляются в закладки.
  • Теперь перейдите в меню Поиск → Закладка → Удалить отмеченные строки

  • Готово.

Ответ 2

Другой способ сделать это в Notepad ++ - это все в диалоговом окне Find/Replace и с регулярным выражением:

  • Ctrl + h, чтобы открыть диалог поиска.

  • В текстовое поле Find what: включено ваше регулярное выражение: .*help.*\r?\n (где \r является необязательным, если файл не имеет окончаний строки Windows).

  • Оставьте текстовое поле Replace with: пустым.

  • Убедитесь, что выбран переключатель "Регулярное выражение" в области "Режим поиска". Затем нажмите Replace All и вуаля! Все строки, содержащие ваш поисковый запрос help, были удалены.

How-To Line Replace in N++

Ответ 3

Простая задача с grep:

grep -v help filename

Добавить > newFileName для перенаправления вывода в новый файл.


Update

Чтобы прояснить это, нормальное поведение будет печатать строки на экране. Чтобы передать его в файл, можно использовать >. Таким образом, в этой команде:

grep -v help filename > newFileName
  • grep вызывает программу grep, очевидно
  • -v - это флаг для обратного вывода. По умолчанию grep печатает строки, соответствующие данному шаблону. С помощью этого флага он напечатает строки, которые не соответствуют шаблону.
  • help - это шаблон, соответствующий
  • filename - имя входного файла
  • > перенаправляет вывод на следующий элемент
  • newFileName новый файл, в котором будет сохранен вывод.

Как вы заметили, вы не будете удалять вещи в своем файле. grep прочитает его, и другой файл будет сохранен, соответственно измененный.

Ответ 4

Вы можете сделать это с помощью sed: sed '/help/ d' < inputFile > outputFile

Ответ 5

Если вы работаете в Windows, попробуйте findstr. Сторонние инструменты не нужны:

findstr /V /L "searchstring" inputfile.txt > outputfile.txt

Он также поддерживает регулярные выражения! Просто прочитайте инструмент помощи findstr/? ,

PS Если вы хотите работать с большими, огромными файлами (например, файлами журналов размером 400 МБ), текстовый редактор не очень экономит память, поэтому, как кто-то уже отметил, инструменты командной строки - это то, что нужно. Но в Windows нет grep, так что...

Я только что запустил это на 1 ГБ лог файл, и это буквально заняло 3 секунды.

Ответ 6

Поиск по регулярному выражению:

^.*(help).*$

Ответ 7

Я попробовал эту формулу notepad ++, чтобы удалить строки, содержащие текст, но он удаляет полный документ рядом. Я хочу удалить одну строку, содержащую это слово, и остановиться, когда она получит пробел, не удалять после пробела.