Comment utiliser les trouver, -exec grep et sed avec expression régulière pour remplacer une partie d'une ligne de texte?
Bien, je voulais vraiment créer un filtre pour une utilisation dans DeltaWalker pour ignorer les fichiers avec seulement une ligne particulière de différence, afin que je puisse identifier les fichiers qui ont eu d'autres modifications du code source. Stackoverflow regex gourou m'a donné plusieurs bonnes expressions qui donnent une bonne find-exec grep résultats dans OS X Terminal, mais n'ont aucun effet sur DeltaWalker résultats. Donc, j'ai une autre idée.
Je me souviens d'un utilitaire appelé sed, je n'ai aucune expérience... mais, je crois qu'il pourrait être appelé avec des find -exec commutateur. Donc, j'ai la suite et je me demande si quelqu'un sait comment mélanger-dans sed pour remplacer la correspondance de la ligne de texte:
"Copyright (c) 2008 - 2009" avec le "Copyright (c) 2008 - 2010"
find . -exec grep -Hn '^.*Copyright (c) 2008 - 2009' {} \;
OriginalL'auteur | 2010-11-24
Vous devez vous connecter pour publier un commentaire.
Vous pourriez simplement faire ce
Je suis en supposant que vous ne voulez pas perdre quoi que ce soit sur la ligne, avant que le droit d'Auteur et est compensée par
.*
Mais, en fonction de votre entrée, il pourrait être aussi simple que
Noter que dans les deux cas je ne suis pas modifier les fichiers, il suffit de montrer ce que les résultats de modifier le contenu. J'imagine que, dans votre scénario réel que vous voulez écrire les changements sur le disque. Pour cela, vous devez l'-je passer à la sed, donc:
Il est intéressant de noter qu'ici, je suis de l'utilisation de GNU sed syntaxe. Je n'ai pas de OS X boîte portée de main pour tester, mais BSD sed utilise généralement -E au lieu de l'option-r pour activer étendu regex.
OriginalL'auteur Sorpigal