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

Linux komandos ir apvalkalo įgūdžiai

sed: srautų redagavimas neatidarant redaktoriaus

sed redaguoja į šoną: per jį praeina ištisi teksto srautai, išeina transformuoti ir neatsidaro jokia redaktorė. Jo reputacija kilusi iš -i, kuri paverčia vienos eilutės pakeitimą į paketinę operaciją tūkstančiuose failų, ir iš nelaimių istorijų administratorių, kurie paleido jį be atsarginės priesagos. Saugi darbo eiga niekada nesikeičia: paleiskite matomą pakeitimą, patvirtinkite išvestį, tada pridėkite -i su priesaga ir palikite išėjimo kodą.

Pagrindiniai punktai

  • Peržiūrėkite prieš įsipareigodami: faile sed -n '10,20p' rodomas eilučių diapazonas, o ta pati kombinacija -n plius p spausdina tik eilutes, kurios atitinka reguliarųjį reiškinį arba adresą.
  • Pakeiskite vėliavėlėmis, kurios daro tai, ką reiškia: s/old/new/g – visos atitiktys, skaičius, pvz., 2g, tik antrasis, ir -E – išplėstinis reguliarusis reiškinys be pasvirojo brūkšnio puslapio.
  • Vietos redagavimas gauna galūnę, be išimčių: sed -i.bak 's/http:/https:/g' programa šalia kiekvieno pakeitimo išsaugo to paties pavadinimo atsarginę kopiją; ši priesaga išgelbėjo daugiau diegimų nei bet kurio redaktoriaus anuliavimo istorija.
  • Skirstytuvai yra nemokami: s|/var/www|/srv/app|g (arba s#...#g) išvengia muštynių, kai jūsų šablonas yra pilnas kelių.
  • -i nėra atominis: gedimas arba blogas reguliariojo reiškinio vidurinis paketas paliko pusiau perrašytus failus, todėl masinės užduotys veikia prieš kopijas arba medžius su git-tracked, o ne vienintele kopija.
  • GNU ir BSD sed nesutaria dėl -i: BSD reikalauja galūnės prieš scenarijų (sed -i '' veikia MacOS, nėra Linux sintaksė), o tai yra dar viena priežastis, dėl kurios perkeliamumo scenarijai visiškai vengia -i.
  • Naikinti ir išskirti yra sąžiningi veiksmažodžiai: 'd' pašalina atitinkančias eilutes (sed '/^#/d' išbraukia komentarus), o -n su diapazonu išskiria sekciją; abu skaitomi geriau nei protingi pakaitalai.
  • Viskas, kas buvo atlikta vienoje eilutėje, kelių eilučių blokai ar būsenos sujungimai, priklauso awk arba tikram scenarijui; verčiant sed dirbti programuotojo darbą, taip gimsta neįskaitomi vieno eilutės raštai.

Pastaba iš praktikos

Mano pirmasis sed -i be .bak galūnės pasiekė gamybinę nginx konfigūraciją prieš pat popietinį srauto piką. Nuo tada kiekvienas redagavimas vietoje turi atsarginį priesagą, o aš perskaičiau sausosios eigos išvestį prieš tai, kai -i net priartėja prie komandos.

Dažniausiai užduodami klausimai

Kaip redaguoti tik eilutes, kurios atitinka ką nors kita?

Kreipkitės į juos: sed '/cache/s/true/false/' paverčia "true" į "false" tik talpyklos eilutėse, o diapazonai, pvz., "/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g", aprėpia blokus; adresas eina pirmas, komanda antra.

Kodėl sed nesutaps su „Windows“ redaguoto failo eilučių pabaigomis?

Šios eilutės baigiasi karietos grįžimo simboliais, kurių „$“ inkarai nesitiki; Pirmiausia pašalinkite juos naudodami tr arba normalizuokite, o kelių eilučių turinys vis tiek priklauso awk arba Perl su -0777.

Ar sed greitesnis nei awk paprastiems pakeitimams?

Nežymiai ir nereikšmingai; abi baigiasi per milisekundes konfigūracijos dydžio failuose. Rinkitės pagal skaitomumą, nes kolega per šešis mėnesius turi išardyti jūsų vieną įdėklą.

Ar galiu įterpti visus konfigūracijos blokus su sed?

Taip: „a“ prideda po, „i“ įterpia prieš, o „c“ pakeičia eilutę, tačiau įterpiamas tekstas turi būti paprastas ir vienpusis; tikrieji blokai priklauso šablono failui arba tinkamam paruošimo veiksmui.

Kaip Kinetikatech padeda su linux komandos ir apvalkalo įgūdžiai

Štai ką darome šiandien: Komandos ir scenarijų rašymo įpročiai, kurie nusprendžia, ar administratorius valdo serverį, ar su juo kovoja: ieškokite, transformuokite, perkelkite ir prižiūrėkite tekstą bei procesus naudodami įrankius, esančius kiekviename baziniame diegime. Mūsų paslauga Linux serverių sauga ir Serverių administravimas apima viską — nuo vertinimo iki įgyvendinimo, stebėjimo 24/7 ir skubaus reagavimo per 30 minučių.

Pasikalbėkite su inžinieriumi

Serverio problema? Svetainė nukauta? Lėtas įkrovimas?

Kritincidentai sprendžiami per 30 minučių — 24 valandas per dieną, 7 dienas per savaitę.

Kreiptis skubios pagalbos support@kinetikatech.com