αναζήτηση 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