Linux naredbe i vještine školjke
sed: Uređivanje tokova bez otvaranja uređivača
sed uređuje postrance: čitavi tokovi teksta prolaze kroz njega, izlaze transformirani i ne otvara se nikakav editor. Njegova reputacija dolazi od -i, koji pretvara zamjenu jednog retka u skupnu operaciju na tisućama datoteka, i od priča o katastrofama administratora koji su ga pokrenuli bez rezervnog sufiksa. Siguran tijek rada nikada se ne mijenja: pokrenite zamjenu vidljivom, potvrdite izlaz, zatim dodajte -i sa sufiksom i zadržite izlazni kod.
Ključne točke
- Pregledajte prije nego što izvršite: datoteka sed -n '10,20p' prikazuje raspon redaka, a ista kombinacija -n plus p ispisuje samo retke koji odgovaraju regularnom izrazu ili adresi.
- Zamijenite zastavicama koje rade ono što mislite: s/staro/novo/g za sva podudaranja, broj kao što je 2g samo za drugo, i -E za prošireni regularni izraz bez stranice s kosom crtom.
- Uređivanja na mjestu dobivaju sufiks, bez iznimaka: aplikacija sed -i.bak 's/http:/https:/g' čuva sigurnosnu kopiju istog imena uz svaku promjenu; taj je sufiks spasio više implementacija od bilo koje uređivačke povijesti poništavanja.
- Razdjelnici su besplatni: s|/var/www|/srv/app|g (ili s#...#g) izbjegava sukobe izbjegavanja kose crte kada je vaš uzorak pun staza.
- -i nije atomski: rušenje ili loš regex u sredini paketa ostavio je napola prepisane datoteke iza sebe, tako da se skupni poslovi pokreću protiv kopija ili git-trackiranih stabala, nikad jedine kopije.
- GNU i BSD sed se ne slažu oko -i: BSD zahtijeva sufiks prije skripte (sed -i '' radi na macOS-u, nije sintaksa Linuxa), što je još jedan razlog više zbog kojeg prenosive skripte u potpunosti izbjegavaju -i.
- Brisanje i izolacija su iskreni glagoli: 'd' uklanja odgovarajuće retke (sed '/^#/d' uklanja komentare), a -n s rasponom izolira odjeljak; oba čitaju bolje od pametnih zamjena.
- Sve što je prošlo uređivanja u jednom retku, doslovne blokove s više redaka ili stalna spajanja pripada awk-u ili pravoj skripti; prisiljavanje sed-a na programerski posao je način na koji se rađaju nečitljivi jednolinijski tekstovi.
Terenska bilješka
Moj prvi sed -i bez sufiksa .bak pogodio je produkcijsku nginx konfiguraciju neposredno prije popodnevnog najvećeg prometa. Od tada svako uređivanje na mjestu nosi rezervni sufiks, a ja čitam izlaz prije nego što se -i približi naredbi.
Često postavljana pitanja
Kako mogu urediti samo retke koji odgovaraju nečem drugom?
Riješite ih: sed '/cache/s/true/false/' pretvara true u false samo na recima predmemorije, a rasponi kao što su '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' uređuju opseg uređivanja blokova; adresa ide prva, a naredba druga.
Zašto sed neće odgovarati krajevima redaka u datoteci uređenoj u sustavu Windows?
Ti redovi završavaju znakovima za povratak na novi red koje '$' sidra ne očekuju; prvo ih skinite s tr ili normalizirajte na putu, a višeredni sadržaj i dalje pripada awk-u ili Perlu s -0777.
Je li sed brži od awk-a za jednostavne zamjene?
Marginalno i nebitno; oba završavaju u milisekundama na datotekama veličine konfiguracije. Birajte po čitljivosti, jer kolega vam mora razmrsiti jedan redak u šest mjeseci.
Mogu li umetnuti cijele konfiguracijske blokove sa sed-om?
Da: 'a' dodaje iza, 'i' umeće prije, a 'c' zamjenjuje redak, ali neka umetnuti tekst bude jednostavan i jednonamjenski; pravi blokovi pripadaju datoteci predloška ili odgovarajućem koraku pružanja.
Kako Kinetikatech pomaže kod linux naredbe i vještine školjke
Iskreno, većina timova dođe do nas nakon što su prvo pokušali sami: Naredbe i navike skriptiranja koje odlučuju hoće li administrator upravljati poslužiteljem ili se boriti protiv njega: pretražujte, transformirajte, prenosite i nadzirite tekst i procese s alatima koji se nalaze u svakoj osnovnoj instalaciji. Naša usluga Sigurnost Linux servera i Upravljanje serverima postoji da se ne morate upoznavati s linux naredbe i vještine školjke na teži način; mi se brinemo o puštanju u rad, nadzoru i iznenađenjima u tri ujutro.