Regex: удалить строки, содержащие

218

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

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

Теги:
notepad++

6 ответов

577
Лучший ответ

Это также возможно с помощью Notepad ++

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

  • Введите поисковый запрос и нажмите "Mark All"

    • Все строки, содержащие поисковый запрос, отмечены закладкой.
  • Теперь перейдите в меню "Search -> Bookmark -> Remove Bookmarked lines"

  • Готово.

  • 31
    Да уж! У него также есть «Remove Unmarked Lines», который похож на grep, именно то, что мне нужно!
  • 5
    Спасибо, это ловкий трюк. Я предпочел бы сделать это с помощью нескольких простых щелчков, чем запустить консоль Unix (игнорируя, что я в основном на Windows), cd по пути к cd -диску, и набрать сложную команду (беспокоиться о синтаксисе и об окончательном сбое) понимая, что нет резервной копии). [ Не поймите меня неправильно, я все время использую консольные команды для других вещей, но для чего-то подобного это просто излишество.]
Показать ещё 15 комментариев
114

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

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

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

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

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

Изображение 4756

  • 16
    лучше ответить, чем использовать вкладку «Отметить», так как это можно сделать для «Найти в файлах»
  • 2
    Обязательно экранируйте специальные символы, такие как скобки, с обратной косой чертой.
Показать ещё 1 комментарий
14

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

grep -v help filename

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


Update

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

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

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

  • 0
    это не сработало с Cygwin
  • 0
    @Kevin Герцог: Увы! Это, вероятно, означает, что у вас не установлен grep . В любом случае, я бы порекомендовал вам установить GNU grep, он, безусловно, будет работать на Windows, и это действительно полезный инструмент.
Показать ещё 6 комментариев
12

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

  • 0
    Куда мы пишем эту команду?
  • 4
    @CengizFrostclaw: в командной строке на Linux / Mac / что угодно. Если вы используете Windows, вам придется установить что-то вроде CygWin и использовать его.
Показать ещё 4 комментария
0

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

0

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

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

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

P.S. Если вы хотите работать с большими, ОГРОМНЫМИ файлами (например, файлами журнала 400 МБ), текстовый редактор не очень эффективен с точки зрения памяти, поэтому, как уже указывалось, инструменты командной строки - это путь. Но там нет grep на окнах, поэтому...

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню