Sed
σημαίνει επεξεργασία ροής. Είναι ένας επεξεργαστής βασισμένος στη γραμμή εντολών για Linux. Η δημοφιλής χρήση του sed είναι για την επεξεργασία αρχείων(ων) ως μέρος ενός σεναρίου αυτοματισμού στο Linux, καθώς οι συνήθεις επεξεργαστές απαιτούν είσοδο ενεργού χρήστη και δεν μπορούν να επεξεργαστούν αρχεία εκτός των οθονών του προγράμματος επεξεργασίας. Το Sed χρησιμοποιείται πιο συχνά για την πραγματοποίηση εύρεσης και αντικατάστασης από τη γραμμή εντολών.
Αυτός ο τύπος προγράμματος επεξεργασίας κειμένου μπορεί επίσης να κατηγοριοποιηθεί ως μη διαδραστικό πρόγραμμα επεξεργασίας κειμένου.
Ας δούμε μερικές κοινές επιλογές για την επεξεργασία αρχείων χρησιμοποιώντας το Sed. Θα πάρουμε ως παράδειγμα το ακόλουθο αρχείο:
$: cat test.txt Ένας γρήγορος καφέ σκύλος πήδηξε πάνω από την τεμπέλα γάτα. Λειτουργικό σύστημα Linux. Το Δάσος κοντά στον τόπο μου έχει γάτα αλλά και λύκους.
Αναζήτηση και αντικατάσταση
Για να αναζητήσετε μια συμβολοσειρά σε ένα αρχείο και να την αντικαταστήσετε με μια άλλη, εκτελέστε:
sed -i "s/cat/fox/g" test.txt
Εδώ, το -Εγώ
Το flag δίνει εντολή στον sed να γράψει τις αλλαγές στο αρχείο. Χωρίς αυτή τη σημαία, sed
θα εμφανίσει απλώς το αρχείο με την αλλαγμένη συμβολοσειρά.
Στα εισαγωγικά, έχουμε s/cat/fox/g
. ο μικρό
είναι για την εντολή αναζήτησης και αντικατάστασης του sed
. Στη συνέχεια, έχουμε τη συμβολοσειρά προς αναζήτηση, που είναι Γάτα
. Στη συνέχεια, η συμβολοσειρά με την οποία θα την αντικαταστήσετε, δηλ. αλεπού
. Τέλος, έχουμε το προαιρετικό σολ
, που καθοδηγεί sed
για να αντικαταστήσετε όλες τις εμφανίσεις σε όλες τις γραμμές του αρχείου. Χωρίς το σολ
, το sed θα αντικαταστήσει μόνο την πρώτη εμφάνιση του Γάτα
σε κάθε γραμμή.
Το Regex μπορεί επίσης να χρησιμοποιηθεί εδώ.
sed -i "s/f[a-z]*\./cat\./g"
Εισάγετε
Για να εισαγάγετε κείμενο πριν από μια γραμμή με αντιστοιχισμένη συμβολοσειρά, χρησιμοποιήστε:
sed -i "/cat/i Έναρξη:" test.txt
Εδώ, Γάτα
είναι η συμβολοσειρά που αναζητήθηκε και Αρχή:
είναι η συμβολοσειρά που πρέπει να εισαγάγετε πριν από τη γραμμή όπου βρίσκεται η συμβολοσειρά που αναζητήσατε.
Ομοίως, για να εισαγάγετε κείμενο μετά από μια γραμμή, χρησιμοποιήστε:
sed -i "/fox/a Τέλος." test.txt
Διαγράφω
Για να διαγράψετε μια γραμμή που περιέχει μια υποσυμβολοσειρά, χρησιμοποιήστε:
sed -i "/Linux/d" test.txt
Για να διαγράψετε μια γραμμή με αριθμό γραμμής, π.χ. την πρώτη γραμμή, χρησιμοποιήστε:
sed -i '1d' test.txt
Συνδυασμός πολλαπλών λειτουργιών
Για να συνδυάσετε πολλές λειτουργίες, π.χ. αναζήτηση και αντικατάσταση, διαγραφή, με μία εντολή, -μι
μπορεί να χρησιμοποιηθεί η σημαία.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Στην υγειά σας!