LFCS: Kuinka GNU sed -komentoa käytetään tiedostojen luomiseen, muokkaamiseen ja käsittelemiseen Linuxissa - osa 1


Linux-säätiö ilmoitti LFCS-sertifikaatin (Linux Foundation Certified Sysadmin), uuden ohjelman, jonka tarkoituksena on auttaa ihmisiä ympäri maailmaa saamaan sertifikaatti Linux-järjestelmien perus- ja keskitason järjestelmänhallintatehtävistä. Tähän sisältyy käynnissä olevien järjestelmien ja palveluiden tukeminen, ensikäden vianmääritys ja analysointi sekä älykäs päätöksenteko, jotta ongelmat voidaan välittää suunnittelutiimeille.

Katso seuraava video, joka kuvaa Linux Foundation -sertifiointiohjelmaa.

Sarjan nimi on Preparation for the LFCS (Linux Foundation Certified Sysadmin) Part 1-10, ja se käsittelee seuraavia aiheita Ubuntulle, CentOS: lle ja openSUSE: lle:

Tämä viesti on osa 20 opetusohjelmaa, joka kattaa tarvittavat alat ja kompetenssit, joita vaaditaan LFCS-sertifiointikokeeseen. Tulee sanoa, sytytä terminaali ja aloitetaan.

Tekstivirtausten käsittely Linuxissa

Linux käsittelee ohjelmien syötteitä ja ulostuloja merkkivirtoina (tai jaksoina). Uudelleenohjauksen ja putkien ymmärtämisen aloittamiseksi meidän on ensin ymmärrettävä kolme tärkeintä I/O-virtaa (Input and Output), jotka ovat itse asiassa erityistiedostoja (yleisesti UNIX- ja Linux-järjestelmissä, tietovirrat ja oheislaitteet tai laitetiedostot). käsitellään myös tavallisina tiedostoina).

Ero > (uudelleenohjausoperaattori) ja | (putkioperaattori) välillä on, että kun ensimmäinen yhdistää komennon tiedostoon, jälkimmäinen yhdistää komennon lähdön toiseen komento.

# command > file
# command1 | command2

Koska uudelleenohjausoperaattori luo tai korvaa tiedostot äänettömästi, meidän on käytettävä sitä äärimmäisen varovaisesti äläkä koskaan erehdytä sitä putkilinjana. Yksi etu putkista Linux- ja UNIX-järjestelmissä on, että putkiin ei liity välitiedostoa - ensimmäisen komennon vakiotyyppiä ei kirjoiteta tiedostoon ja sitten toinen komento lukee.

Seuraavissa harjoituksissa käytämme runoa ” Onnellinen lapsi ” (tuntematon kirjailija).

Nimi sed on lyhyt virtaeditorille. Niille, jotka eivät tunne tätä termiä, virtaeditoria käytetään suorittamaan perustekstimuunnokset syötevirralle (tiedosto tai tulo putkistolta).

Sedin perustavanlaatuisin (ja suosituin) käyttö on merkkien korvaaminen. Aloitetaan vaihtamalla kaikki pienet kirjaimet y isoihin kirjaimiin Y ja ohjaamalla ulostulo osoitteeseen ahappychild2.txt . g -lippu osoittaa, että sedin tulisi korvata kaikki termitapaukset jokaisella tiedostorivillä. Jos tämä lippu jätetään pois, sed korvaa vain termin ensimmäisen esiintymisen kullakin rivillä.

# sed ‘s/term/replacement/flag’ file
# sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Jos haluat etsiä tai korvata erikoismerkin (kuten /, \, & ), sinun on vältettävä sitä termillä tai korvaavat kielet taaksepäin kauttaviivalla.

Korvataan esimerkiksi sana ja etumerkki. Samalla korvataan sana I sanalla Sinä , kun ensimmäinen löytyy rivin alusta.

# sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

Edellä olevassa komennossa ^ (caret-merkki) on tunnettu säännöllinen lauseke, jota käytetään rivin alun edustamiseen.

Kuten näette, voimme yhdistää kaksi tai useampia korvauskomentoja (ja käyttää niiden sisällä säännöllisiä lausekkeita) erottamalla ne puolipisteellä ja liittämällä joukon yksittäisissä lainausmerkeissä.

Toinen sedin käyttö on valitun tiedoston osan näyttäminen (tai poistaminen). Seuraavassa esimerkissä näytetään /var/log/messages viisi ensimmäistä riviä 8. kesäkuuta alkaen.

# sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

Huomaa, että oletusarvoisesti sed tulostaa kaikki rivit. Voimme ohittaa tämän käyttäytymisen -n -vaihtoehdolla ja sitten käske sed tulostamaan (merkitty p ) vain tiedoston (tai putken) osan, joka vastaa mallia (Ensimmäisessä tapauksessa rivin alussa 8. kesäkuuta ja toisessa tapauksessa riviä 1–5 mukaan lukien).

Lopuksi voi olla hyödyllistä tarkastaa komentosarjoja tai määritystiedostoja itse koodin tarkastamiseksi ja kommenttien jättämiseksi pois. Seuraava sed one-liner poistaa ( d ) tyhjät tai # -alkuiset rivit ( | -merkki osoittaa loogisen TAI kahden tavallisen ilmaisut).

# sed '/^#\|^$/d' apache2.conf

uniq -komennon avulla voimme ilmoittaa tai poistaa kaksoiskappaleet tiedostosta kirjoittamalla oletusarvoisesti stdout-tiedostoon. On huomattava, että uniq ei tunnista toistuvia viivoja, elleivät ne ole vierekkäin. Siten uniq ia käytetään yleisesti yhdessä edellisen lajittelun kanssa (jota käytetään tekstitiedostojen rivien lajitteluun). Oletusarvon mukaan lajittelu ottaa ensimmäisen kentän (välilyönneillä erotettuna) avainkentäksi. Jos haluat määrittää toisen avainkentän, meidän on käytettävä -k -vaihtoehtoa.

du –sch/path/to/directory/* -komento palauttaa määritetyn hakemiston alihakemistoja ja tiedostoja koskevan levytilan käytön ihmisille luettavassa muodossa (näyttää myös hakemistokohtaisen kokonaismäärän) eikä järjestä tulos koon mukaan, mutta alihakemiston ja tiedostonimen mukaan. Voimme käyttää seuraavaa komentoa lajittelemaan koon mukaan.

# du -sch /var/* | sort –h

Voit laskea lokin tapahtumien määrän päivämäärän mukaan käskemällä uniq suorittaa vertailu käyttämällä kunkin rivin 6 ensimmäistä merkkiä (-w 6) (jos päivämäärä on määritetty) ja etuliittämällä kukin tulorivi esiintymien lukumäärän ( -c ) mukaan seuraavalla komennolla.

# cat /var/log/mail.log | uniq -c -w 6

Lopuksi voit yhdistää lajittelu ja uniq (kuten ne yleensä ovat). Harkitse seuraavaa tiedostoa, jossa on luettelo lahjoittajista, lahjoituspäivä ja määrä. Oletetaan, että haluamme tietää, kuinka monta ainutlaatuista luovuttajaa on. Leikkaamme ensimmäisen kentän (kentät on erotettu kaksoispisteellä), lajitellaan nimen mukaan ja poistetaan päällekkäiset rivit seuraavalla komennolla.

# cat sortuniq.txt | cut -d: -f1 | sort | uniq

Lue myös : 13 komentoa "kissa"

grep etsii tekstitiedostoista tai (komentolähdöstä) määritetyn säännöllisen lausekkeen esiintymisen ja antaa kaikki rivit, jotka sisältävät vastaavuuden vakiolähtöön.

Näytä käyttäjän /etc/passwd tiedot käyttäjän gacanepasta huomioimatta kirjainkokoa.

# grep -i gacanepa /etc/passwd

Näytä koko /etc -sisältö, jonka nimi alkaa rc : llä, jota seuraa mikä tahansa yksittäinen numero.

# ls -l /etc | grep rc[0-9]

Lue myös : 12 komentoa "grep"

tr -komentoa voidaan käyttää kääntämään (muuttamaan) tai poistamaan merkkejä stdinistä ja kirjoittamaan tulos stdoutiin.

Vaihda kaikki pienet ja isot kirjaimet sortuniq.txt-tiedostossa.

# cat sortuniq.txt | tr [:lower:] [:upper:]

Purista ls –l -lähdön erotinta vain yhteen välilyöntiin.

# ls -l | tr -s ' '

Leikkaa -komento poimii osia syöttöriveistä (stdinistä tai tiedostoista) ja näyttää tuloksen vakiotulosteessa tavujen lukumäärän ( -b vaihtoehto), merkkien (< b> -c ) tai kentät ( -f ). Tässä viimeisessä tapauksessa (kenttien perusteella) oletusarvoinen kentän erotin on välilehti, mutta erilainen erotin voidaan määrittää käyttämällä vaihtoehtoa -d .

Pura käyttäjätilit ja niille määritetyt oletuskuoret /etc/passwd -kohdasta ( –d -vaihtoehdon avulla voimme määrittää kentän erottimen ja –f -kytkin ilmoittaa, mitkä kentät puretaan.

# cat /etc/passwd | cut -d: -f1,7

Yhteenvetona luomme tekstivirran, joka koostuu viimeisen -komennon lähdön ensimmäisestä ja kolmannesta ei-tyhjästä tiedostosta. Käytämme grep : ää ensimmäisenä suodattimena käyttäjän gacanepa istuntojen tarkistamiseen ja puristamme sitten erotimet vain yhteen tilaan ( tr -s '' ). Seuraavaksi otamme ensimmäisen ja kolmannen kentän leikkauksella ja lajittelemme lopuksi toisen kentän (tässä tapauksessa IP-osoitteet) mukaan, joka näyttää ainutlaatuiselta.

# last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

Yllä oleva komento näyttää kuinka useita komentoja ja putkia voidaan yhdistää suodatetun datan saamiseksi toiveidemme mukaan. Voit vapaasti käyttää sitä myös osittain, jotta näet tuloksen, joka kulkee yhdestä komennosta toiseen (tämä voi olla muuten loistava oppimiskokemus!).

Yhteenveto

Vaikka tämä esimerkki (yhdessä nykyisen opetusohjelman muiden esimerkkien kanssa) ei ehkä näytä kovin hyödylliseltä ensi silmäyksellä, se on hieno lähtökohta kokeilemaan komentoja, joita käytetään tiedostojen luomiseen, muokkaamiseen ja käsittelyyn Linuxista komentorivi. Jätä kysymyksesi ja kommenttisi vapaasti alla - niitä arvostetaan suuresti!

  1. Tietoja LFCS: stä
  2. Miksi hankkia Linux Foundation -sertifikaatti?
  3. Rekisteröidy LFCS-kokeeseen