2010-07-29 8 views
2

Je vais vous montrer ce que je veux faire à l'aide d'une commande TextMate ou paquet:TextMate trouver du texte, puis supprimer la ligne entière?

Disons que nous avons le document suivant:

foo 
diddy 
    bah 
foo 
foobah 
diddy 

Je veux trouver et supprimer toutes les lignes correspondant à bah, la sortie désirée dans ce cas serait:

foo 
diddy 
foo 
diddy 

Merci!

Répondre

9

Avec le document que vous souhaitez filtrer ouvert,

  • Cmd-F pour afficher le Finder fenêtre

  • Ensuite, sous les deux zones de saisie de texte, cliquez Expression régulière

  • Dans le Trouver zone de texte, tapez cette expression rationnelle (sans les espaces):

    ^. *? bah. *? $

  • Dans la Remplacer zone de texte, ne tapez pas dans quoi que ce soit - assurez-vous que le champ vide, -à-dire, pas de caractères blancs

  • Avec le curseur au début de le document à filtrer, cliquez sur l'un des boutons au bas de la fenêtre Rechercher - par exemple, Remplacer tout pour supprimer toutes les lignes de correspondance en une seule étape, ou Remplacer et CHER pour parcourir les lignes une à la fois

C'est tout.


Voici une manière plus automatisée pour faire la même chose:

  • de la barre de menu, sélectionnez Filtre via la commande du texte menu déroulant

  • entrez ceci dans la zone de texte au en haut de la petite fenêtre qui apparaît:

    sed '/ ^. * bah.* $/D '

  • sélectionnez Document en entrée et sélectionnez Remplacer le document en sortie

  • Cliquez Execute

[Remarque: i inséré des espaces entre les jetons de regexp dans les deux exemples parce que pour une raison quelconque les astérisques '' n'étaient pas rendus en page HTML]

+0

Hey merci pour votre réponse! tout fonctionne presque correctement, peut-être que je manque quelque chose, mais après avoir suivi vos instructions, la sortie que je reçois est la suivante: http://gist.github.com/500613 au lieu de http://gist.github.com/ 500616. – jpemberthy

+0

Je ne pourrais pas reproduire votre sortie; De toute façon, j'ai édité ma réponse ci-dessus pour inclure une alternative en utilisant "Filter Through Command" (et qui est en fait plus facile à utiliser). – doug

+0

Le filtre a fonctionné! Merci! – jpemberthy

0

Construire au-dessus de la réponse @ doug Puisque l'utilisateur veut supprimer la ligne après le match, la solution à l'aide Regex est

^ . * ? bah . * ? $\n 

assorti \ n à la fin va supprimer la ligne