Linux-komennot ja komentotulkkitaidot
sed: It is virtojen muokkaaminen avaamatta editoria
sed muokkaa sivuttain: kokonaisia tekstivirtoja kulkee sen läpi, tulee ulos muunnettuina, eikä editori avaudu. Sen maine tulee -i:stä, joka muuttaa yhden rivin korvaamisen eräoperaatioksi tuhansien tiedostojen kesken, ja niiden järjestelmänvalvojien katastrofitarinoista, jotka suorittivat sen ilman varmuuskopiota. Turvallinen työnkulku ei muutu koskaan: suorita korvaus näkyvissä, vahvista tulos, lisää sitten -i päätteellä ja säilytä poistumiskoodi.
Keskeiset kohdat
- Esikatselu ennen sitoutumista: sed -n '10,20p' -tiedosto näyttää rivivälin, ja sama -n plus p -yhdistelmä tulostaa vain rivit, jotka vastaavat säännöllistä lauseketta tai osoitetta.
- Korvaa lipuilla, jotka tekevät mitä tarkoitat: s/vanha/uusi/g kaikille osumille, luku, kuten 2g, vain sekunti ja -E laajennettu regex ilman kenoviivan sivua.
- Paikalla tehdyt muokkaukset saavat jälkiliitteen, ei poikkeuksia: sed -i.bak 's/http:/https:/g' -sovellus säilyttää samannimisen varmuuskopion jokaisen muutoksen yhteydessä; tämä jälkiliite on pelastanut enemmän käyttöönottoja kuin minkään editorin kumoamishistoria.
- Erottimet ovat ilmaisia: s|/var/www|/srv/app|g (tai s#...#g) välttää vinoviivaa pakenevat tappelut, kun kuviosi on täynnä polkuja.
- -i ei ole atomaarinen: kaatuminen tai huono regex-keskierä jätti kerran jälkeensä puoliksi uudelleenkirjoitetut tiedostot, joten joukkotyöt suoritetaan kopioita tai git-tracked -puita vastaan, eivät koskaan ainoa kopio.
- GNU ja BSD sed ovat eri mieltä koskien -i:tä: BSD vaatii jälkiliitteen ennen komentosarjaa (sed -i '' toimii macOS:ssä, ei ole Linux-syntaksi), mikä on lisäsyy, miksi siirrettävyysskriptit välttävät -i:n kokonaan.
- Poista ja eristä ovat rehellisiä verbejä: 'd' poistaa vastaavat rivit (sed '/^#/d' poistaa kommentit), ja -n, jossa on alue, eristää osan; molemmat lukevat paremmin kuin fiksut vaihdot.
- Kaikki yksirivisistä muokkauksista, kirjaimellisista monirivisistä lohkoista tai tilallisista liitoksista mennyt kuuluu awk:iin tai todelliseen komentosarjaan; Jos sed pakotetaan tekemään ohjelmoijatyötä, syntyy lukukelvottomia yksilinjaisia.
Kenttämuistiinpano
Ensimmäinen sed -i ilman .bak-liitettä osui tuotantoon nginx-konfiguraatioon juuri ennen iltapäivän liikennehuippua. Siitä lähtien jokaisessa paikalla tehdyssä muokkauksessa on varmuuskopiointiliite, ja luin kuivakäynnin tulosteen ennen kuin -i edes menee lähelle komentoa.
Usein kysytyt kysymykset
Kuinka voin muokata vain rivejä, jotka vastaavat jotain muuta?
Osoita niitä: sed '/cache/s/true/false/' kääntää true arvoon false vain välimuistiriveillä ja alueet, kuten '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g', muokkaa lohkoja; osoite menee ensin, komento toiseksi.
Miksi sed ei vastaa Windows-muokatun tiedoston rivien päitä?
Nämä rivit päättyvät rivinvaihtomerkkeihin, joita $-ankkurit eivät odota; Poista ne tr:llä ensin tai normalisoi sisääntulon yhteydessä, ja monirivinen sisältö kuuluu edelleen awk- tai Perliin -0777:llä.
Onko sed nopeampi kuin awk yksinkertaisissa vaihdoissa?
Marginaalisesti ja epäolennaisesti; molemmat päättyvät millisekunneissa asetuskokoisissa tiedostoissa. Valitse luettavuuden mukaan, sillä kollegasi on purettava yksivuorisi kuudessa kuukaudessa.
Voinko lisätä kokonaisia konfiguraatiolohkoja sedillä?
Kyllä: "a" lisää perään, "i" lisää ennen ja "c" korvaa rivin, mutta pitää lisätyn tekstin yksinkertaisena ja yksikäyttöisenä; todelliset lohkot kuuluvat mallitiedostoon tai oikeaan valmisteluvaiheeseen.
Näin Kinetikatech auttaa: linux-komennot ja komentotulkkitaidot
Olemme hoitaneet tätä satoja kertoja: Komennot ja komentosarjatavat, jotka ratkaisevat, käyttääkö järjestelmänvalvoja palvelinta vai taisteleeko sitä vastaan: etsi, muunna, siirrä ja valvo tekstiä ja prosesseja työkaluilla, jotka ovat jokaisessa perusasennuksessa. Palvelulla Linux-palvelinten tietoturva ja Palvelinten ylläpito saat täyden kierron: arvioimme, otamme käyttöön, seuraamme keskeytyksettä ja reagoimme 30 minuutissa tarvittaessa.