sed - επεξεργαστής ροής για φιλτράρισμα και μετασχηματισμό κειμένου
ΣΥΝΟΨΗ
sed [-V] [--version] [--help] [-n] [--quiet] [--silent]
[-l N] [--line-length=N] [-u] [--unbuffered]
[-E] [-r] [--regexp-extended]
[-e script] [--expression=script]
[-f script-file] [--file=script-file]
[script-if-no-other-script]
[file...]
ΠΕΡΙΓΡΑΦΗ
Το Sed είναι ένας επεξεργαστής ροής. Ένας επεξεργαστής ροής χρησιμοποιείται για την εκτέλεση βασικών μετασχηματισμών κειμένου σε μια ροή εισόδου (ένα αρχείο ή είσοδος από μια σωλήνα). Ενώ σε ορισμένες περιπτώσεις είναι παρόμοιο με έναν επεξεργαστή που επιτρέπει επεξεργασίες με βάση σενάρια (όπως το ed), το sed λειτουργεί κάνοντας μόνο μία διέλευση από την(τις) είσοδο(ους) και, κατά συνέπεια, είναι πιο αποδοτικό. Αλλά η ικανότητα του sed να φιλτράρει κείμενο σε μια σωλήνα είναι αυτό που το διακρίνει ιδιαίτερα από άλλους τύπους επεξεργαστών.
-n, --quiet, --silent
καταστέλλει την αυτόματη εκτύπωση του χώρου προτύπου
--debug
προσθέτει σχόλια κατά την εκτέλεση του προγράμματος
-e script, --expression=script
προσθέτει το σενάριο στις εντολές που θα εκτελεστούν
-f script-file, --file=script-file
προσθέτει το περιεχόμενο του script-file στις εντολές που θα εκτελεστούν
--follow-symlinks
ακολουθεί συμβολικούς συνδέσμους κατά την επεξεργασία επί τόπου
-i[SUFFIX], --in-place[=SUFFIX]
επεξεργάζεται τα αρχεία επί τόπου (δημιουργεί αντίγραφο ασφαλείας εάν δοθεί το SUFFIX)
-l N, --line-length=N
καθορίζει το επιθυμητό μήκος περιτύλιξης γραμμής για την εντολή `l`
--posix
απενεργοποιεί όλες τις επεκτάσεις GNU.
-E, -r, --regexp-extended
χρησιμοποιεί εκτεταμένες κανονικές εκφράσεις στο σενάριο (για φορητότητα, χρησιμοποιήστε POSIX -E).
-s, --separate
θεωρεί τα αρχεία ως ξεχωριστά και όχι ως μία, συνεχόμενη μεγάλη ροή.
--sandbox
λειτουργεί σε λειτουργία sandbox (απενεργοποιεί τις εντολές e/r/w).
-u, --unbuffered
φορτώνει ελάχιστες ποσότητες δεδομένων από τα αρχεία εισόδου και εκτελεί εκροές των buffer πιο συχνά
-z, --null-data
χωρίζει τις γραμμές με χαρακτήρες NUL
--help
εμφανίζει αυτήν την βοήθεια και εξέρχεται
--version
εξάγει πληροφορίες έκδοσης και εξέρχεται
Εάν δεν δοθεί καμία από τις επιλογές -e, --expression, -f ή --file, τότε το πρώτο μη-επιθετικό όρισμα λαμβάνεται ως το σενάριο sed που θα ερμηνευθεί. Όλα τα υπόλοιπα ορίσματα είναι ονόματα αρχείων εισόδου. εάν δεν καθοριστούν αρχεία εισόδου, τότε διαβάζεται η τυπική είσοδος.
Αρχική σελίδα GNU sed: [https://www.gnu.org/software/sed/]. Γενική βοήθεια για τη χρήση λογισμικού GNU: [https://www.gnu.org/gethelp/>. Στείλτε αναφορές σφαλμάτων μέσω email στη διεύθυνση: <_].
Συσκευασμένο από το Debian. Πνευματικά δικαιώματα © 2022 Free Software Foundation, Inc. Άδεια GPLv3+: GNU GPL έκδοση 3 ή μεταγενέστερη [https://gnu.org/licenses/gpl.html]. Αυτό είναι ελεύθερο λογισμικό: έχετε την ελευθερία να το αλλάξετε και να το διανείμετε. Δεν παρέχεται καμία εγγύηση, στο μέγιστο βαθμό που επιτρέπεται από το νόμο.
ΣΥΝΟΨΗ ΕΝΤΟΛΩΝ
Αυτή είναι απλώς μια σύντομη σύνοψη των εντολών sed για να χρησιμεύσει ως υπενθύμιση για όσους γνωρίζουν ήδη το sed. Άλλη τεκμηρίωση (όπως το έγγραφο texinfo) πρέπει να συμβουλευτεί για πληρέστερες περιγραφές.
Εντολές με μηδενική ή μία διεύθυνση
: ετικέτα
Ετικέτα για τις εντολές b και t.
#σχόλιο
Το σχόλιο εκτείνεται μέχρι την επόμενη νέα γραμμή (ή το τέλος του τμήματος του σεναρίου -e).
} Κλείσιμο μπλοκ { }.
Εντολές με μηδενική ή μία διεύθυνση
= Εκτύπωση του τρέχοντος αριθμού γραμμής.
a \
κείμενο Προσάρτηση κειμένου, στο οποίο κάθε ενσωματωμένη νέα γραμμή προηγείται με μια ανάστροφη κάθετο.
i \
κείμενο Εισαγωγή κειμένου, στο οποίο κάθε ενσωματωμένη νέα γραμμή προηγείται με μια ανάστροφη κάθετο.
q [κωδικός_εξόδου]
Άμεση έξοδος από το σενάριο sed χωρίς επεξεργασία περαιτέρω εισόδου, εκτός εάν η αυτόματη εκτύπωση δεν είναι απενεργοποιημένη, οπότε ο τρέχων χώρος προτύπου θα εκτυπωθεί. Το όρισμα κωδικός_εξόδου είναι επέκταση GNU.
Q [κωδικός_εξόδου]
Άμεση έξοδος από το σενάριο sed χωρίς επεξεργασία περαιτέρω εισόδου. Αυτή είναι μια επέκταση GNU.
r όνομα_αρχείου
Προσάρτηση κειμένου που διαβάζεται από το όνομα_αρχείου.
R όνομα_αρχείου
Προσάρτηση μιας γραμμής που διαβάζεται από το όνομα_αρχείου. Κάθε επανάληψη της εντολής διαβάζει μια γραμμή από το αρχείο. Αυτή είναι μια επέκταση GNU.
Εντολές που δέχονται εύρη διευθύνσεων
{ Έναρξη ενός μπλοκ εντολών (τελειώνει με }).
b ετικέτα
Μετάβαση στην ετικέτα. Εάν η ετικέτα παραλειφθεί, μετάβαση στο τέλος του σεναρίου.
c \
κείμενο Αντικατάσταση των επιλεγμένων γραμμών με κείμενο, στο οποίο κάθε ενσωματωμένη νέα γραμμή προηγείται με μια ανάστροφη κάθετο.
d Διαγραφή του χώρου προτύπου. Έναρξη του επόμενου κύκλου.
D Εάν ο χώρος προτύπου δεν περιέχει νέα γραμμή, ξεκινήστε έναν κανονικό νέο κύκλο σαν να εκδόθηκε η εντολή d. Διαφορετικά, διαγράψτε το κείμενο στον χώρο προτύπου μέχρι την πρώτη νέα γραμμή και επανεκκινήστε τον κύκλο με τον προκύπτοντα χώρο προτύπου, χωρίς να διαβάσετε μια νέα γραμμή εισόδου.
h H Αντιγραφή/προσάρτηση του χώρου προτύπου στον χώρο διατήρησης.
g G Αντιγραφή/προσάρτηση του χώρου διατήρησης στον χώρο προτύπου.
l Εμφάνιση της τρέχουσας γραμμής σε μια μορφή που είναι «οπτικά σαφής».
l πλάτος
Εμφάνιση της τρέχουσας γραμμής σε μια μορφή που είναι «οπτικά σαφής», διακόπτοντάς την στα πλάτος χαρακτήρες. Αυτή είναι μια επέκταση GNU.
n N Ανάγνωση/προσάρτηση της επόμενης γραμμής εισόδου στον χώρο προτύπου.
p Εκτύπωση του τρέχοντος χώρου προτύπου.
P Εκτύπωση έως την πρώτη ενσωματωμένη νέα γραμμή του τρέχοντος χώρου προτύπου.
s/κανονική_έκφραση/αντικατάσταση/
Προσπαθήστε να αντιστοιχίσετε την κανονική_έκφραση στον χώρο προτύπου. Εάν είναι επιτυχής, αντικαταστήστε αυτό το τμήμα που ταιριάζει με την αντικατάσταση. Η αντικατάσταση μπορεί να περιέχει τον ειδικό χαρακτήρα & για να αναφέρεται στο τμήμα του χώρου προτύπου που ταιριάζει και τις ειδικές μεταβλητές \1 έως \9 για να αναφέρονται στις αντίστοιχες υποεκφράσεις που ταιριάζουν στην κανονική_έκφραση.
t ετικέτα
Εάν μια εντολή s/// έχει κάνει μια επιτυχημένη αντικατάσταση από την τελευταία γραμμή εισόδου που διαβάστηκε και από την τελευταία εντολή t ή T, τότε μεταβείτε στην ετικέτα. Εάν η ετικέτα παραλειφθεί, μεταβείτε στο τέλος του σεναρίου.
T ετικέτα
Εάν καμία εντολή s/// δεν έχει κάνει μια επιτυχημένη αντικατάσταση από την τελευταία γραμμή εισόδου που διαβάστηκε και από την τελευταία εντολή t ή T, τότε μεταβείτε στην ετικέτα. Εάν η ετικέτα παραλειφθεί, μεταβείτε στο τέλος του σεναρίου. Αυτή είναι μια επέκταση GNU.
w όνομα_αρχείου
Εγγραφή του τρέχοντος χώρου προτύπου στο όνομα_αρχείου.
W όνομα_αρχείου
Εγγραφή της πρώτης γραμμής του τρέχοντος χώρου προτύπου στο όνομα_αρχείου. Αυτή είναι μια επέκταση GNU.
x Ανταλλάξτε το περιεχόμενο του χώρου συγκράτησης και του χώρου προτύπου.
y/πηγή/προορισμός/
Μεταγράψτε τους χαρακτήρες στον χώρο προτύπου που εμφανίζονται στην πηγή στον αντίστοιχο χαρακτήρα στον προορισμό.
Διευθύνσεις
Οι εντολές Sed μπορούν να δοθούν χωρίς διευθύνσεις, οπότε η εντολή θα εκτελείται για όλες τις γραμμές εισόδου. με μία διεύθυνση, οπότε η εντολή θα εκτελείται μόνο για τις γραμμές εισόδου που ταιριάζουν με αυτή τη διεύθυνση. ή με δύο διευθύνσεις, οπότε η εντολή θα εκτελείται για όλες τις γραμμές εισόδου που ταιριάζουν με το περιεκτικό εύρος γραμμών που ξεκινά από την πρώτη διεύθυνση και συνεχίζει μέχρι τη δεύτερη διεύθυνση. Τρία πράγματα που πρέπει να σημειωθούν σχετικά με τα εύρη διευθύνσεων: η σύνταξη είναι addr1,addr2 (δηλαδή, οι διευθύνσεις χωρίζονται με κόμμα). η γραμμή στην οποία ταιριάζει η addr1 θα γίνεται πάντα δεκτή, ακόμη και αν η addr2 επιλέξει μια προηγούμενη γραμμή. και εάν η addr2 είναι μια κανονική έκφραση, δεν θα δοκιμαστεί στην γραμμή στην οποία ταιριάζει η addr1.
Μετά τη διεύθυνση (ή το εύρος διευθύνσεων) και πριν από την εντολή, μπορεί να εισαχθεί ένα !, το οποίο καθορίζει ότι η εντολή θα εκτελείται μόνο εάν η διεύθυνση (ή το εύρος διευθύνσεων) δεν ταιριάζει.
Υποστηρίζονται οι ακόλουθοι τύποι διευθύνσεων:
αριθμός Ταιριάζει μόνο με τον καθορισμένο αριθμό γραμμής (ο οποίος αυξάνεται σωρευτικά σε όλα τα αρχεία, εκτός εάν η επιλογή -s καθορίζεται στη γραμμή εντολών).
πρώτος~βήμα
Ταιριάζει με κάθε βήματος γραμμή, ξεκινώντας από τη γραμμή πρώτος. Για παράδειγμα, η ``sed -n 1~2p'' θα εκτυπώσει όλες τις γραμμές με περιττό αριθμό στην είσοδο, και η διεύθυνση 2~5 θα ταιριάζει με κάθε πέμπτη γραμμή, ξεκινώντας από τη δεύτερη. Το πρώτος μπορεί να είναι μηδέν. σε αυτήν την περίπτωση, το sed λειτουργεί σαν να ήταν ίσο με το βήμα. (Αυτή είναι μια επέκταση).
$ Ταιριάζει με την τελευταία γραμμή.
/κανονική_έκφραση/
Ταιριάζει με γραμμές που ταιριάζουν με την κανονική έκφραση κανονική_έκφραση. Η αντιστοίχιση πραγματοποιείται στον τρέχοντα χώρο προτύπου, ο οποίος μπορεί να τροποποιηθεί με εντολές όπως η ``s///''.
\κανονική_έκφρασηc
Ταιριάζει με γραμμές που ταιριάζουν με την κανονική έκφραση κανονική_έκφραση. Το c μπορεί να είναι οποιοσδήποτε χαρακτήρας.
Το GNU sed υποστηρίζει επίσης ορισμένες ειδικές μορφές διευθύνσεων 2:
0addr2
Ξεκινήστε στην κατάσταση "αντιστοίχισης πρώτης διεύθυνσης", έως ότου βρεθεί η addr2. Αυτό είναι παρόμοιο με το 1,addr2, εκτός από το ότι εάν η addr2 ταιριάζει με την πολύ πρώτη γραμμή εισόδου, η μορφή 0,addr2 θα είναι στο τέλος του εύρους της, ενώ η μορφή 1,addr2 θα εξακολουθεί να είναι στην αρχή του εύρους της. Αυτό λειτουργεί μόνο όταν η addr2 είναι μια κανονική έκφραση.
addr1,+N
Θα ταιριάζει με την addr1 και τις N γραμμές που ακολουθούν την addr1.
addr1,~N
Θα ταιριάζει με την addr1 και τις γραμμές που ακολουθούν την addr1 μέχρι την επόμενη γραμμή του οποίου ο αριθμός γραμμής εισόδου είναι πολλαπλάσιο του N.
ΚΑΝΟΝΙΚΕΣ ΕΚΦΡΑΣΕΙΣ
Οι BREs του POSIX.2 θα πρέπει να υποστηρίζονται, αλλά δεν υποστηρίζονται πλήρως λόγω προβλημάτων απόδοσης. Η ακολουθία \n σε μια κανονική έκφραση ταιριάζει με τον χαρακτήρα νέας γραμμής και ομοίως για \a, \t και άλλες ακολουθίες. Η επιλογή -E μεταβαίνει στη χρήση εκτεταμένων κανονικών εκφράσεων. υποστηρίζεται εδώ και χρόνια από το GNU sed και πλέον περιλαμβάνεται στο POSIX.
ΣΦΑΛΜΑΤΑ
Στείλτε αναφορές σφαλμάτων μέσω email στο _. Επίσης, συμπεριλάβετε στην αναφορά σας, εάν είναι δυνατόν, την έξοδο της ``sed --version''.
ΣΥΓΓΡΑΦΕΑΣ
Γράφτηκε από τους Jay Fenlason, Tom Lord, Ken Pizzini, Paolo Bonzini, Jim Meyering και Assaf Gordon.
Αυτό το πρόγραμμα sed δημιουργήθηκε με υποστήριξη SELinux. Το SELinux είναι απενεργοποιημένο σε αυτό το σύστημα.
GNU sed αρχική σελίδα: [https://www.gnu.org/software/sed/]. Γενική βοήθεια για τη χρήση του λογισμικού GNU: [https://www.gnu.org/gethelp/>. Στείλτε αναφορές σφαλμάτων μέσω email στη διεύθυνση: <_].
ΔΕΣ ΕΠΙΣΗΣ
awk(1), ed(1), grep(1), tr(1), perlre(1), sed.info, οποιοδήποτε από τα διάφορα βιβλία για το sed, το FAQ του sed (http://sed.sf.net/grabbag/tutorials/sedfaq.txt), http://sed.sf.net/grabbag/.
Η πλήρης τεκμηρίωση για το sed διατηρείται ως ένα εγχειρίδιο Texinfo. Εάν τα προγράμματα info και sed έχουν εγκατασταθεί σωστά στην τοποθεσία σας, η εντολή
info sed
θα πρέπει να σας δώσει πρόσβαση στο πλήρες εγχειρίδιο.