αναζήτηση pattern σε αρχεία και αντικατάστασή του με άλλο

Thanos pampo at freemail.gr
Thu Oct 12 16:53:34 EEST 2006


Giorgos Keramidas wrote:
> On 2006-10-11 15:59, Thanos <pampo at freemail.gr> wrote:
>> Έχω ένα φάκελο με αρκετούς υποφακέλους και αρκετά αρχεία απλού κειμένου ο
>> καθένας. Προσπαθώ να ψάξω μέσα σε όλα αυτά τα αρχεία για ένα συγκεκριμένο
>> pattern και αν υπάρχει να το αντικαταστήσω με κάποιο άλλο που θα δώσω
>> εγώ.
>>
>> Χωρίς να έχω διαβάσει πολλά και με έλλειψη χρόνου για πειραματισμούς θα
>> ήμουν ευγνώμων αν κάποιος με καθοδηγούσε στην σωστή κατεύθυνση.
> 
> Μπορείς να βρεις τη λίστα των αρχείων που κάνουν match με το GNU grep:
> 
> %   $ cd projects/foo
> %   $ grep -irl 'regexp-or-pattern' .
> 
> Το να αντικαταστήσεις 'in place' ύστερα ένα pattern (πιθανόν το ίδιο που
> έκανε match πριν), μπορεί να γίνει είτε με sed(1), είτε με Perl.  Για
> παράδειγμα, σήμερα χρειάστηκε να διορθώσω ένα τυπογραφικό λάθος σε ένα
> documentation string στο GNU Emacs source tree.  Αντί να κάθομαι να το
> κάνω με το χέρι σε κάθε αρχείο που το είχε, έκανα το εξής:
> 
> %   $ cd ~/hg/emacs-keramida
> %   $ fgrep -ril quoute .
> %   ./lisp/apropos.el
> %   $
> 
> Αυτό δείχνει τη λίστα με τα αρχεία (που τυχαίνει να είναι ένα αλλά θα
> μπορούσε να έχει αρκετές χιλιάδες αρχεία).
> 
> Η αντικατάσταση, ύστερα, ήταν θέμα λίγων δευτερολέπτων με:
> 
> %   $ fgrep -ril quoute . | xargs perl -i -pe 's/quoute/quote/g'
> %   $

Παντα αναλυτικός και αποτελεσματικός! Ευχαριστώ...

Προς το παρόν το χρησιμοποιώ έτσι αλλά θα το ψάξω και θα επανέλθω... ;-)




More information about the Migrate2linux mailing list