У меня длинный документ команд. Используя notepad ++ или regex, я хочу удалить все строки, содержащие "help", включая keyboard_help и т.д.
Как это можно сделать?
Это также возможно с помощью Notepad ++
"Mark"
.Проверьте "Bookmark line"
(если в текущей версии нет обновления "Mark"
).
Введите поисковый запрос и нажмите "Mark All"
Теперь перейдите в меню "Search -> Bookmark -> Remove Bookmarked lines"
Готово.
Другой способ сделать это в Notepad ++ - это все в диалоговом окне Find/Replace и с регулярным выражением:
Ctrl + h, чтобы открыть диалог поиска.
В текстовое поле Find what:
включено ваше регулярное выражение: .*help.*\r?\n
(где \r
является необязательным, если файл не имеет окончаний строки Windows).
Оставьте текстовое поле Replace with:
пустым.
Убедитесь, что выбран переключатель "Регулярное выражение" в области "Режим поиска". Затем нажмите Replace All
и вуаля! Все строки, содержащие ваш поисковый запрос help
, были удалены.
Простая задача с grep
:
grep -v help filename
Добавить > newFileName
для перенаправления вывода в новый файл.
Чтобы прояснить это, нормальное поведение будет печатать строки на экране. Чтобы передать его в файл, можно использовать >
. Таким образом, в этой команде:
grep -v help filename > newFileName
grep
вызывает программу grep
, очевидно-v
- это флаг для обратного вывода. По умолчанию grep
печатает строки, соответствующие данному шаблону. С помощью этого флага он напечатает строки, которые не соответствуют шаблону.help
- это шаблон, соответствующийfilename
- имя входного файла>
перенаправляет вывод на следующий элементnewFileName
новый файл, в котором будет сохранен вывод.Как вы заметили, вы не будете удалять вещи в своем файле. grep
прочитает его, и другой файл будет сохранен, соответственно измененный.
grep
. В любом случае, я бы порекомендовал вам установить GNU grep, он, безусловно, будет работать на Windows, и это действительно полезный инструмент.
Вы можете сделать это с помощью sed: sed '/help/ d' < inputFile > outputFile
Я попробовал эту формулу notepad ++, чтобы удалить строки, содержащие текст, но он удаляет полный документ рядом. Я хочу удалить одну строку, содержащую это слово, и остановиться, когда она получит пробел, не удалять после пробела.
Если вы в Windows попробуйте findstr
, вам не нужны сторонние инструменты:
findstr /V /L "searchstring" inputfile.txt > outputfile.txt
Он также поддерживает регулярное выражение! Просто прочитайте справку по инструменту findstr /?
P.S. Если вы хотите работать с большими, ОГРОМНЫМИ файлами (например, файлами журнала 400 МБ), текстовый редактор не очень эффективен с точки зрения памяти, поэтому, как уже указывалось, инструменты командной строки - это путь. Но там нет grep на окнах, поэтому...
Просто запустил это в файл журнала 1 ГБ, и буквально занял 3 секунды.
cd
по пути кcd
-диску, и набрать сложную команду (беспокоиться о синтаксисе и об окончательном сбое) понимая, что нет резервной копии). [ Не поймите меня неправильно, я все время использую консольные команды для других вещей, но для чего-то подобного это просто излишество.]