Как удалить все строки, которые содержат слово с TextWrangler?

У меня есть гигантский файл с тысячами строк, я хочу удалить только те строки, в которых есть слово "Foo".

Как бы я поступил так? Я на Mac, так что я мог бы использовать некоторые утилиты командной строки, но я бы предпочел использовать TextWrangler.

7 ответов

Решение

Редакторы большинства графических программистов не позволяют вам удалять подобные строки, а только изменять их содержимое. Это можно сделать, заменив ^.*Foo.*$ ни с чем.

Если вы готовы обратиться к внешнему инструменту, это можно сделать, отфильтровав sed "/Foo/d",

В TextWrangler: Текст > Строки процесса, содержащие…

Быстрая командная строка для этого:

grep -v myword myfile > newfile

Используйте регулярное выражение, чтобы найти строки, затем замените их пустой строкой.

Вот страница, которая объясняет, как построить регулярное выражение:

http://www.regular-expressions.info/completelines.html

Для этого в TextWrangler:

  1. Выберите "Найти" в меню "Поиск".
  2. Проверьте флажок Grep.
  3. Введите регулярное выражение в текстовое поле Find:.
  4. Выберите Далее.

Если вы ищете и заменяете ^.*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
Другие вопросы по тегам