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 ++, чтобы удалить строки, содержащие текст, но он удаляет полный документ рядом. Я хочу удалить одну строку, содержащую это слово, и остановиться, когда она получит пробел, не удалять после пробела.