2010-08-25 4 views
0

Je sais que vous pouvez utiliser pour supprimer les lignes videsTextMate: supprimer les commentaires du document

sed /^$/d 

et ceci pour supprimer des commentaires commençant par #

sed /^#/d 

mais comment vous supprimez toutes les commentaires commençant par //?

Répondre

2

Vous avez juste besoin d '"échapper" les barres obliques avec le backslash. L'opérateur^le lie au début de la ligne, ainsi votre exemple n'affectera que les commentaires commençant dans la première colonne. Vous pouvez également ajouter des espaces et des tabulations, puis utiliser l'opérateur d'alternance | choisir entre deux identifiants de commentaire.

/^[ \t]*(\/\/|$)/ 

Edit: Si vous voulez simplement supprimer les commentaires du fichier, vous pouvez faire quelque chose comme:

/(\/\/|$).*/ 

Je ne sais pas ce que l'opérateur « d » au fin fait, mais l'expression ci-dessus devrait correspondre pour vous modulo devoir échapper les parenthèses ou l'opérateur d'alternance (le caractère '|')

Éditer 2: Je viens de me rendre compte qu'en utilisant un Mac, vous pouvez "bombarder" cette commande et utiliser le système sed. Dans ce cas, vous pouvez essayer de placer des guillemets autour du motif de recherche afin que le shell ne fasse rien de fou à tous vos personnages magiques. :) Dans ce cas, 'd' signifie "supprimer l'espace de motif", alors il suffit de coller un 'd' après le dernier exemple que j'ai donné et vous devriez être défini.

Edit 3: Oh je viens de réaliser, vous aurez envie de se méfier que si vous ne surprenez pas les choses à l'intérieur de citations (vous ne voulez pas supprimer de # en fin de ligne si elle est en un string!). L'expression rationnelle devient un peu plus compliquée dans ce cas, malheureusement, à moins que vous ne vous contentiez de vérifier les lignes avec des chaînes pour les commentaires. ... mais alors vous auriez besoin d'utiliser l'opération de substitution pour sed plutôt que search-and-delete-match. ... et vous auriez besoin de plus d'évasions, et cela devient de la folie. Je suggère de chercher une aide en ligne sed (il y a de bons testeurs regex là-bas, peut-être qu'il y en a un pour Sed?).

Désolé de sorte d'abandonner le projet à ce stade. Ce "problème" est celui que sed peut faire, mais il devient sensiblement plus complexe à chaque étape, par opposition à simplement fouetter un peu de Python pour le faire.

+0

obtenu le premier à travailler, mais le second me donne une erreur. Je voudrais supprimer tous les commentaires de l'ensemble du document, qu'ils soient au début d'une ligne. – tim

+0

Je ne connais pas les détails de l'implémentation de regex de TextMate, mais vous pourriez essayer d'échapper les parenthèses (vous devriez les échapper dans Vim par défaut, par exemple, pour les faire fonctionner comme des jetons de regroupement). –

Questions connexes