Εύρεση & Αντικατάσταση κειμένου σε πολλά έγγραφα από τη γραμμή εντολών

Anonim

Εάν αισθάνεστε άνετα με τη γραμμή εντολών και σε μια κατάσταση όπου πρέπει να βρείτε και να αντικαταστήσετε μια λέξη, φράση, διεύθυνση URL ή χαρακτήρα σε μια ομάδα πολλαπλών εγγράφων κειμένου, η perl κάνει τη δουλειά της αρκετά καλά. Μια απλή συμβολοσειρά εντολών θα εκτελέσει πολύ γρήγορα μια ομαδική εύρεση και αντικατάσταση σε κείμενο, είτε σε ένα μόνο έγγραφο είτε σε μια ομάδα πολλαπλών εγγράφων.

Όπως πολλά πράγματα στη γραμμή εντολών, δεν υπάρχει διαδικασία επιβεβαίωσης, επομένως θα πρέπει να βεβαιωθείτε ότι η σύνταξή σας έχει ρυθμιστεί σωστά πριν ξεκινήσετε μια εντολή, διαφορετικά μπορεί να χρειαστεί να κάνετε άλλη εύρεση και αντικατάσταση για να επιδιορθώσετε το τυπογραφικό σας λάθος.

Η βασική σύνταξη της εντολής είναι η εξής: perl -pi -w -e 's/THIS/THAT/g;' /path/to/files.txt

Για ένα παράδειγμα μιας λέξης, εάν πρέπει να αντικαταστήσετε όλες τις εμφανίσεις του "ogre" με το "cornbread" σε κάθε αρχείο .txt μέσα στο φάκελο "Documents", τότε θα χρησιμοποιούσατε την ακόλουθη εντολή:

perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt

Για ένα παράδειγμα εύρεσης και αντικατάστασης μιας ολόκληρης φράσης, ας υποθέσουμε ότι πρόκειται να αντικαταστήσουμε ολόκληρη την πρόταση «The Chocolate Factory " με το "The Wizard of Oz" σε μια ομάδα αρχείων .txt που ξεκινούν με "Films" αποθηκευμένα στον κατάλογο Documents:

perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documents/Films.txt

Η εύρεση και αντικατάσταση γίνεται αμέσως. Μπορείτε να ελέγξετε ξανά την αλλαγή χρησιμοποιώντας το cat and grep για να ελέγξετε:

"

γάτα ~/Documents/Films124.txt |grep Μάγος του Οζ"

Ομολογουμένως, αυτό είναι αρκετά προηγμένο, και ναι, η ομαδική εύρεση και αντικατάσταση μέσω πολλών εγγράφων μπορεί να γίνει με πιο φιλικό προς τον χρήστη τρόπο μέσω εφαρμογών GUI όπως το TextWrangler και το BBEdit, αλλά μερικές φορές η γραμμή εντολών είναι απλώς πιο γρήγορη για γρήγορες εργασίες όπως αυτή και άλλες παρόμοιες, καθώς δεν απαιτεί πρόσθετες λήψεις για χρήση.

Ένα μεγάλο μπράβο στον Lifehacker για το εξαιρετικό κόλπο.

Ενημέρωση: Η εντολή «sed» είναι ένας άλλος τρόπος για να κάνετε γρήγορη εύρεση και αντικατάσταση μέσω της γραμμής εντολών. Η κάλυψη του sed είναι ως επί το πλείστον θέμα για ένα άλλο άρθρο, αλλά η βασική σύνταξη της χρήσης του sed για αυτήν την εργασία είναι λίγο πιο απλή και επομένως πιο εύκολη στην απομνημόνευση:

sed -i 's/THIS/THAT/g' /path/to/files.txt

Δεν υπάρχει σωστός ή λάθος τρόπος, επομένως το αν χρησιμοποιείτε perl ή sed γίνεται θέμα προσωπικής προτίμησης.

Εύρεση & Αντικατάσταση κειμένου σε πολλά έγγραφα από τη γραμμή εντολών