TextMate найти текст, а затем удалить всю строку?

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

Допустим, у нас есть следующий документ:

foo  
diddy
  bah
foo
foobah
diddy

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

foo
diddy
foo
diddy

Спасибо!

2 ответа

Решение

С документом, который вы хотите отфильтровать,

  • Cmd-F, чтобы вызвать окно Finder

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

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

    ^ *? ба *? $

  • В текстовом поле " Заменить" ничего не вводите - убедитесь, что оно пустое, т. Е. Без пробелов

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

Вот и все.


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

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

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

    sed '/ ^. * Ба * $ / d '

  • выберите Document as Input и выберите Replace Document as Output

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

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

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

^ . * ? bah . * ? $\n

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

Другие вопросы по тегам