sed Εντολή για αντικατάσταση μιας συμβολοσειράς σε ένα αρχείο

Sed Command Replace String File



Κάθε φορά που εργαζόμαστε με οποιοδήποτε είδος αρχείων, είναι μια πολύ συνηθισμένη πρακτική να κάνουμε τροποποιήσεις σε αυτά τα αρχεία βρίσκοντας και αντικαθιστώντας λέξεις. Οι περισσότεροι από τους επεξεργαστές κειμένου παρέχουν διαφορετικές μεθόδους βασισμένες στο GUI για την πραγματοποίηση αυτών των τροποποιήσεων. Ωστόσο, μερικές φορές, χρειάζεστε έναν τρόπο για να βρείτε και να αντικαταστήσετε τις λέξεις μέσα σε ένα αρχείο μέσω του τερματικού. Επομένως, σε αυτό το άρθρο, θα σας καθοδηγήσουμε στη μέθοδο χρήσης της εντολής sed για να αντικαταστήσετε μια συμβολοσειρά σε ένα αρχείο κειμένου. Θα ρίξουμε επίσης φως στα διάφορα σενάρια στα οποία μπορεί να χρησιμοποιηθεί αυτή η εντολή.

Σημείωση: Θα χρησιμοποιήσουμε το Linux Mint 20 για να δείξουμε τη χρήση της εντολής sed για να αντικαταστήσουμε μια συμβολοσειρά σε ένα αρχείο. Μπορείτε επίσης να χρησιμοποιήσετε οποιαδήποτε άλλη γεύση Linux εάν το επιθυμείτε.







Χρήση του sed Command:

Τώρα θα σας δείξουμε μερικά πολύ ενδιαφέροντα παραδείγματα για την απεικόνιση της χρήσης της εντολής sed στο Linux. Ας δούμε πώς λειτουργεί αυτή η εντολή σε διαφορετικά σενάρια.



Δημιουργία αρχείου κειμένου για επίδειξη:

Για την επίδειξη της χρήσης της εντολής sed, θα θέλαμε να συνεργαστούμε με ένα αρχείο κειμένου. Ωστόσο, μπορείτε ακόμη και να δημιουργήσετε ένα αρχείο Bash ή οποιοδήποτε άλλο αρχείο της επιλογής σας. Δεύτερον, θα δημιουργήσουμε το αρχείο στον αρχικό κατάλογο, έτσι ώστε να μην χρειάζεται να καθορίσουμε σύνθετες διαδρομές κατά την πρόσβαση σε αυτό το αρχείο. Για τη δημιουργία ενός αρχείου κειμένου, πρέπει να εκτελεστούν τα ακόλουθα βήματα:



Κάντε κλικ στο εικονίδιο Διαχείριση αρχείων που βρίσκεται στη γραμμή εργασιών Linux Mint 20:





Τώρα δημιουργήστε ένα νέο αρχείο κειμένου στον αρχικό κατάλογο κάνοντας δεξί κλικ οπουδήποτε εκεί και, στη συνέχεια, επιλέγοντας την επιλογή Νέο έγγραφο από το μενού cascading και την επιλογή Empty document από το μενού sub-cascading. Μόλις δημιουργηθεί το αρχείο κειμένου, δώστε του ένα κατάλληλο όνομα. Για το συγκεκριμένο παράδειγμα, το έχω ονομάσει sed.txt.



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

Τώρα ξεκινήστε το τερματικό στο Linux Mint 20 όπως φαίνεται στην παρακάτω εικόνα:

Αφού ξεκινήσετε το τερματικό στο Linux Mint 20, μπορείτε να δείτε όλα τα παραδείγματα που αναφέρονται παρακάτω ένα προς ένα.

Χρησιμοποιώντας την εντολή sed για την αντικατάσταση όλων των εμφανίσεων μιας δεδομένης λέξης:

Μπορείτε να χρησιμοποιήσετε την εντολή sed για την αντικατάσταση όλων των εμφανίσεων μιας δεδομένης λέξης σε ένα αρχείο κειμένου. Η σύνταξη για την επίτευξη αυτού του στόχου αναφέρεται παρακάτω:

$sed'μικρό/sed/FindWord/ReplaceWord/’File.txt

Εδώ, πρέπει να αντικαταστήσετε το FindWord με τη λέξη που θέλετε να αντικαταστήσετε και το ReplaceWord με τη λέξη που θα αντικατασταθεί. Επιπλέον, πρέπει επίσης να αντικαταστήσετε το αρχείο με το όνομα του αρχείου όπου θέλετε να κάνετε αυτές τις αντικαταστάσεις. Σε αυτό το σενάριο, αντικατέστησα το FindWord με sed και το ReplaceWord με αντικατάσταση. Το όνομα αρχείου μας ήταν sed.txt. Εμφανίζεται επίσης στην παρακάτω εικόνα:

Η επιτυχής εκτέλεση αυτής της εντολής θα σας δείξει τις αλλαγές που έχουν συμβεί λόγω της εκτέλεσης αυτής της εντολής στο τερματικό σας:

Χρησιμοποιώντας την εντολή sed για την αντικατάσταση της ένατης εμφάνισης μιας δεδομένης λέξης σε κάθε γραμμή:

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

$sed'μικρό/FindWord/ReplaceWord/num ’file.txt

Εδώ, πρέπει να αντικαταστήσετε το FindWord με τη λέξη που θέλετε να αντικαταστήσετε και το ReplaceWord με τη λέξη που θα αντικατασταθεί. Επιπλέον, πρέπει επίσης να αντικαταστήσετε το αρχείο με το όνομα του αρχείου όπου θέλετε να κάνετε αυτές τις αντικαταστάσεις. Σε αυτό το σενάριο, αντικατέστησα το FindWord αντικατάσταση και το ReplaceWord με sed. Το όνομα αρχείου μας ήταν sed.txt. Επίσης, το num αναφέρεται στην εμφάνιση ή τη θέση της λέξης που θα αντικατασταθεί. Στο παράδειγμα που παρουσιάζεται, θέλω να αντικαταστήσω την πρώτη εμφάνιση της αντικατάστασης με sed σε κάθε γραμμή, όπως φαίνεται στην παρακάτω εικόνα:

Η επιτυχής εκτέλεση αυτής της εντολής θα σας δείξει τις αλλαγές που έχουν συμβεί λόγω της εκτέλεσης αυτής της εντολής στο τερματικό σας:

Χρησιμοποιώντας την εντολή sed για την αντικατάσταση ενός δεδομένου Word σε μια συγκεκριμένη γραμμή:

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

$sed‘LineNum s/FindWord/ReplaceWord/’File.txt

Εδώ, πρέπει να αντικαταστήσετε το FindWord με τη λέξη που θέλετε να αντικαταστήσετε και το ReplaceWord με τη λέξη που θα αντικατασταθεί. Επιπλέον, πρέπει επίσης να αντικαταστήσετε το αρχείο με το όνομα του αρχείου όπου θέλετε να κάνετε αυτές τις αντικαταστάσεις. Σε αυτό το σενάριο, αντικατέστησα το FindWord sed και το ReplaceWord με αντικατάσταση. Το όνομα αρχείου μας ήταν sed.txt. Επίσης, πρέπει να αντικαταστήσετε το LineNum με τον αριθμό γραμμής της συγκεκριμένης γραμμής στην οποία θέλετε να κάνετε την αντικατάσταση. Σε αυτό το παράδειγμα, θέλαμε να αντικαταστήσουμε το sed με αντικατάσταση στη γραμμή 2 του αρχείου μας, όπως φαίνεται στην παρακάτω εικόνα:

Η επιτυχής εκτέλεση αυτής της εντολής θα σας δείξει τις αλλαγές που έχουν συμβεί λόγω της εκτέλεσης αυτής της εντολής στο τερματικό σας. Μπορείτε εύκολα να επαληθεύσετε ότι οι εν λόγω αλλαγές έχουν συμβεί μόνο στη γραμμή 2 του αρχείου μας και όχι σε ολόκληρο το κείμενο.

Συμπέρασμα:

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