2010-07-29 5 views
2

Я покажу вам, что я хочу сделать с помощью команды Textmate или узелок:TextMate найти текст, а затем удалить всю строку?

позволяет сказать, что мы имеем следующий документ:

foo 
diddy 
    bah 
foo 
foobah 
diddy 

Я хочу найти и удалить все строки, соответствующие bah, желательным выводом в этом случае будет:

foo 
diddy 
foo 
diddy 

Спасибо!

ответ

9

С документом, который требуется фильтр открыть,

  • Cmd-F, чтобы открыть Finder окно

  • Далее, ниже две коробки ввода текста, нажмите Регулярное выражение

  • В Найти текстового поля, введите в регулярном выражении (без пробелов):

    ^. *? бах. *? не $

  • В текстовом поле Заменить, не вводите ни в чем - убедитесь, что он пустой, т.е., без пробельных символов

  • С помощью курсора в начале документа, который вы хотите фильтровать, нажмите одну из кнопок на нижней части окна Find - например, Заменить все удалить все совпадающие строки в один шаг, или Заменить и найти для поочередования по очереди за один раз

Всё.


Вот более автоматизированный способ сделать то же самое:

  • из панели меню, выберите Filter Через Command из текста ниспадающего меню

  • введите это в текстовое поле на верхней части появившегося маленького окна:

    sed '/ ^. * бах.* $/D '

  • выберите документ в качестве входного и выберите Заменить документ в качестве выходного сигнала

  • Нажмите Выполнить

[Примечание: я вставлены пробелы между регулярных выражений маркеров в обоих примерах потому что по какой-то причине звездочки «» не отображались на странице HTML)

+0

Эй спасибо за ответ! все работает почти правильно, может быть, я чего-то не хватает, но после выполнения ваших инструкций вывод, который я получаю, следующий: http://gist.github.com/500613 вместо http://gist.github.com/ 500616. – jpemberthy

+0

i не воспроизводит ваш результат; во всяком случае, я отредактировал свой ответ выше, чтобы включить альтернативу, используя «Filter Through Command» (и которая на самом деле проще в использовании). – doug

+0

Фильтр работал! благодаря! – jpemberthy

0

Наверху ответа @ dougПоскольку пользователь хочет удалить строку после матча, решение с помощью Regex является

^ . * ? bah . * ? $\n 

Совпадение \ п в конце будет удалить строку

Смежные вопросы