NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
EL

Εντολές Linux

sed: Επεξεργασία ροών χωρίς άνοιγμα επεξεργασίας

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

Βασικά σημεία

  1. Προεπισκόπηση πριν από τη δέσμευση: το αρχείο sed -n '10,20p' εμφανίζει ένα εύρος γραμμής και ο ίδιος συνδυασμός -n συν p εκτυπώνει μόνο γραμμές που ταιριάζουν με ένα regex ή μια διεύθυνση.
  2. Αντικαταστήστε με σημαίες που κάνουν αυτό που εννοείτε: s/παλιό/νέο/g για όλους τους αγώνες, έναν αριθμό όπως 2g μόνο για το δεύτερο και -E για εκτεταμένο regex χωρίς διαφυγές ανάστροφης κάθετου σελίδας.
  3. Οι επιτόπιες επεξεργασίες λαμβάνουν επίθημα, χωρίς εξαιρέσεις: η εφαρμογή sed -i.bak 's/http:/https:/g' διατηρεί ένα αντίγραφο ασφαλείας με το ίδιο όνομα δίπλα σε κάθε αλλαγή. αυτό το επίθημα έχει σώσει περισσότερες αναπτύξεις από το ιστορικό αναίρεσης οποιουδήποτε συντάκτη.
  4. Οι οριοθέτες είναι δωρεάν: το s|/var/www|/srv/app|g (ή το s#...#g) αποφεύγει τους αγώνες που ξεφεύγουν από κάθετο όταν το μοτίβο σας είναι γεμάτο μονοπάτια.
  5. Το -i δεν είναι ατομικό: ένα crash ή ένα κακό regex στη μέση της παρτίδας άφησε κάποτε μισογραμμένα αρχεία πίσω, έτσι οι μαζικές εργασίες τρέχουν σε αντίγραφα ή δέντρα με παρακολούθηση git, ποτέ το μόνο αντίγραφο.
  6. Το GNU και το BSD sed διαφωνούν στο -i: Το BSD απαιτεί το επίθημα πριν από το σενάριο (το sed -i '' λειτουργεί στο macOS, δεν είναι σύνταξη Linux), που είναι ένας ακόμη λόγος που τα σενάρια φορητότητας αποφεύγουν εντελώς το -i.
  7. Η διαγραφή και η απομόνωση είναι ειλικρινή ρήματα: το 'd' αφαιρεί τις αντίστοιχες γραμμές (το sed '/^#/d' αφαιρεί σχόλια) και το -n με ένα εύρος απομονώνει μια ενότητα. και οι δύο διαβάζουν καλύτερα από έξυπνες αντικαταστάσεις.
  8. Οτιδήποτε έχει περάσει από επεξεργασίες μίας γραμμής, κυριολεκτικά μπλοκ πολλαπλών γραμμών ή ενώσεις με κατάσταση κατάστασης ανήκει σε awk ή σε πραγματικό σενάριο. αναγκάζοντας τον sed να κάνει δουλειά προγραμματιστή είναι το πώς γεννιούνται τα μη αναγνώσιμα one-liners.

Σημείωση από το πεδίο

Το πρώτο μου sed -i χωρίς επίθημα .bak χτύπησε μια διαμόρφωση παραγωγής nginx ακριβώς πριν από την απογευματινή αιχμή της κυκλοφορίας. Έκτοτε, κάθε επιτόπια επεξεργασία φέρει ένα εφεδρικό επίθημα και διαβάζω την έξοδο ξηρής εκτέλεσης πριν ακόμη το -i πλησιάσει την εντολή.

Συχνές ερωτήσεις

Πώς μπορώ να επεξεργαστώ μόνο γραμμές που ταιριάζουν με κάτι άλλο;

Απευθυνθείτε σε αυτούς: Το sed '/cache/s/true/false/' μετατρέπει το true σε false μόνο στις γραμμές της κρυφής μνήμης και κυμαίνεται όπως "/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g" επεξεργασίες εύρους σε μπλοκ. η διεύθυνση πηγαίνει πρώτη, η εντολή μετά.

Γιατί το sed δεν ταιριάζει με τα άκρα των γραμμών σε ένα αρχείο που έχει επεξεργαστεί τα Windows;

Αυτές οι γραμμές τελειώνουν με χαρακτήρες μεταφοράς που δεν περιμένουν οι άγκυρες '$'. αφαιρέστε τα πρώτα με tr ή κανονικοποιήστε τα κατά την είσοδο και το περιεχόμενο πολλών γραμμών εξακολουθεί να ανήκει στο awk ή στο Perl με -0777.

Είναι το sed πιο γρήγορο από το awk για απλές αντικαταστάσεις;

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

Μπορώ να εισάγω ολόκληρα μπλοκ διαμόρφωσης με το sed;

Ναι: το «a» προστίθεται μετά, το «i» εισάγεται πριν και το «c» αντικαθιστά τη γραμμή, αλλά διατηρείται το εισαγόμενο κείμενο απλό και μονοσκοπικό. Τα πραγματικά μπλοκ ανήκουν σε ένα αρχείο προτύπου ή σε ένα σωστό βήμα παροχής.

Πώς βοηθάει η Kinetikatech στα εντολές linux

Για να είμαστε ειλικρινείς, οι περισσότερες ομάδες έρχονται σε εμάς αφού δοκιμάσουν μόνες τους: Οι εντολές και οι συνήθειες δέσμης ενεργειών που αποφασίζουν εάν ένας διαχειριστής χειρίζεται έναν διακομιστή ή τον καταπολεμά: αναζήτηση, μετατροπή, μεταφορά και επίβλεψη κειμένου και διεργασιών με τα εργαλεία που υπάρχουν σε κάθε βασική εγκατάσταση. Η υπηρεσία μας Ασφάλεια διακομιστών Linux and Διαχείριση διακομιστών υπάρχει για να μην ανακαλύψετε εντολές linux με τον σκληρό τρόπο· την εγκατάσταση, την παρακολούθηση και τις εκπλήξεις τις αναλαμβάνουμε εμείς.

Μιλήστε με έναν μηχανικό

Πρόβλημα διακομιστή; Εισβολή στον ιστότοπο; Αργός ιστότοπος;

Απάντηση σε κρίσιμα ζητήματα εντός 30 λεπτών — 24 ώρες την ημέρα, 7 ημέρες την εβδομάδα.

Ζήτηστε επείγουσα υποστήριξη support@kinetikatech.com