Как удалить все строки, которые содержат слово с TextWrangler?
У меня есть гигантский файл с тысячами строк, я хочу удалить только те строки, в которых есть слово "Foo".
Как бы я поступил так? Я на Mac, так что я мог бы использовать некоторые утилиты командной строки, но я бы предпочел использовать TextWrangler.
7 ответов
Редакторы большинства графических программистов не позволяют вам удалять подобные строки, а только изменять их содержимое. Это можно сделать, заменив ^.*Foo.*$
ни с чем.
Если вы готовы обратиться к внешнему инструменту, это можно сделать, отфильтровав sed "/Foo/d"
,
Быстрая командная строка для этого:
grep -v myword myfile > newfile
Используйте регулярное выражение, чтобы найти строки, затем замените их пустой строкой.
Вот страница, которая объясняет, как построить регулярное выражение:
http://www.regular-expressions.info/completelines.html
Для этого в TextWrangler:
- Выберите "Найти" в меню "Поиск".
- Проверьте флажок Grep.
- Введите регулярное выражение в текстовое поле Find:.
- Выберите Далее.
Если вы ищете и заменяете ^.*Foo.*\r
ничего (с включенной опцией "Использовать Grep") полностью избавит от строк с "Foo", а не просто удалит их. Единственным ограничением является то, что он не будет работать на последней строке в файле. (Замена \r.*Foo.*$
ни с чем не сработало бы на последней строчке, но не на первой.)
Bare Bones TextWrangler http://www.barebones.com/products/textwrangler/
Текстовые строки меню процесса, содержащие… Пункт меню
Введите текст для удаления Затем выберите строки для удаления
подтвердить
Эта командная строка Perl добьется цели!
perl -ni -e "print unless /Foo/" large_file.txt
Вы также можете сделать несколько файлов:
perl -ni -e "print unless /Foo/" *.txt