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

Comenzi Linux și abilități Shell

sed: Editarea fluxurilor fără a deschide un editor

sed editează lateral: fluxuri întregi de text trec prin el, ies transformate și nu se deschide niciun editor. Reputația sa provine de la -i, care transformă o înlocuire pe o singură linie într-o operațiune de lot pe mii de fișiere și din poveștile dezastre ale administratorilor care au rulat-o fără un sufix de rezervă. Fluxul de lucru sigur nu se schimbă niciodată: rulați înlocuirea vizibilă, confirmați rezultatul, apoi adăugați -i cu un sufix și păstrați codul de ieșire.

Puncte-cheie

  1. Previzualizează înainte de a efectua comiterea: fișierul sed -n '10,20p' arată un interval de linii, iar aceeași combinație -n plus p afișează numai linii care se potrivesc cu o expresie regex sau o adresă.
  2. Înlocuiește cu steaguri care fac ceea ce vrei să spui: s/old/new/g pentru toate potrivirile, un număr ca 2g doar pentru secunda și -E pentru expresia regex extinsă fără o pagină de evadări backslash.
  3. Editările la locul lor primesc un sufix, fără excepții: aplicația sed -i.bak 's/http:/https:/g' păstrează o copie de rezervă cu același nume lângă fiecare modificare; acel sufix a salvat mai multe implementări decât istoricul de anulări al oricărui editor.
  4. Delimitatorii sunt gratuiti: s|/var/www|/srv/app|g (sau s#...#g) evită luptele care scapă de bare atunci când modelul tău este plin de căi.
  5. -i nu este atomic: o blocare sau o expresie regex proastă la mijlocul lotului a lăsat odată fișiere pe jumătate rescrise în urmă, așa că lucrările în bloc rulează pe copii sau arbori urmăriți prin git, niciodată singura copie.
  6. GNU și BSD nu sunt de acord cu privire la -i: BSD necesită sufixul înainte de script (sed -i '' funcționează pe macOS, nu este o sintaxă Linux), ceea ce este încă un motiv pentru care scripturile de portabilitate evită complet -i.
  7. Șterge și izola sunt verbe sincere: „d” elimină liniile care se potrivesc (sed „/^#/d” elimină comentariile), iar -n cu un interval izolează o secțiune; ambele citesc mai bine decât înlocuirile inteligente.
  8. Orice lucru din trecutul editărilor pe o singură linie, blocurile literale cu mai multe linii sau alinările cu stare aparține awk sau unui script real; Forțarea sedului să facă munca de programator este modul în care iau naștere one-line-uri ilizibile.

Notă de teren

Primul meu sed -i fără un sufix .bak a lovit o configurație nginx de producție chiar înainte de vârful traficului de după-amiază. De atunci, fiecare editare la loc poartă un sufix de rezervă și am citit rezultatul de rulare uscată înainte ca -i chiar să se apropie de comandă.

Întrebări frecvente

Cum editez numai liniile care se potrivesc cu altceva?

Adresați-le: sed '/cache/s/true/false/' transformă adevărat în fals numai pe liniile de cache, și intervale precum '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' editează sfera blocurilor; adresa merge prima, comanda pe al doilea.

De ce sed nu se va potrivi cu capetele liniilor dintr-un fișier editat de Windows?

Acele linii se termină cu caractere de întoarcere la cărucior la care ancorele „$” nu le așteaptă; strip-le cu tr mai întâi sau normalize pe drum spre intrare, iar conținutul cu mai multe linii mai aparține în awk sau Perl cu -0777.

Sed este mai rapid decât awk pentru înlocuiri simple?

În mod marginal și irelevant; ambele se termină în milisecunde pe fișierele de dimensiunea configurației. Alegeți în funcție de lizibilitate, pentru că un coleg trebuie să vă dezmeticeze linerul în șase luni.

Pot introduce blocuri întregi de configurare cu sed?

Da: „a” se adaugă după, „i” se inserează înainte și „c” înlocuiește linia, dar păstrează textul inserat simplu și cu un singur scop; blocurile reale aparțin unui fișier șablon sau unui pas adecvat de furnizare.

Cum ajută Kinetikatech la comenzi linux și abilități shell

Sincer, majoritatea echipelor ajung la noi după ce au încercat mai întâi singure: Comenzile și obiceiurile de scriptare care decid dacă un administrator operează un server sau îl luptă: căutați, transformați, transferați și supravegheați textul și procesele cu instrumentele care se află în fiecare instalare de bază. Serviciul nostru Securitate servere Linux and Administrare servere există ca să nu te familiarizezi cu comenzi linux și abilități shell pe bune; noi ne ocupăm de punere în funcțiune, de supraveghere și de surprizele de la ora trei dimineața.

Vorbește cu un inginer

Problemă la server? Site hackuit? Încărcare lentă?

Probleme critice soluționate în 30 de minute — nonstop, 7 zile pe săptămână.

Solicită asistență de urgență support@kinetikatech.com