4

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

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

7 ответов7

17

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

1

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

grep -v myword myfile > newfile
1

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

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

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

Для этого в TextWrangler:

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

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

Если вы хотите посмотреть на внешний инструмент, это можно сделать, отфильтровав через sed "/Foo/d" .

0

Bare Bones TextWrangler http://www.barebones.com/products/textwrangler/

Текстовые строки меню процесса, содержащие… Пункт меню

Введите текст для удаления Затем выберите строки для удаления

подтвердить

Технологические линии, содержащие

0

Эта командная строка Perl добьется цели!

perl -ni -e "print unless /Foo/" large_file.txt

Вы также можете сделать несколько файлов:

perl -ni -e "print unless /Foo/" *.txt
0

Если вы ищете и заменяете ^.*Foo.*\r без ничего (с включенной "Использовать Grep"), он полностью избавится от строк с "Foo" в них, а не просто удалит их. Единственным ограничением является то, что он не будет работать на последней строке в файле. (Замена \r.*Foo.*$ Ни с чем не сработает в последней строке, но не в первой.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .