LFCS: Kaip naudoti „GNU sed“ komandą failams kurti, redaguoti ir valdyti sistemoje „Linux“ - 1 dalis


„Linux Foundation“ paskelbė LFCS („Linux Foundation Certified Sysadmin“) sertifikatą - naują programą, kurios tikslas - padėti žmonėms visame pasaulyje įgyti sertifikatus atliekant pagrindines ir tarpines sistemos administravimo užduotis, skirtas „Linux“ sistemoms. Tai apima veikiančių sistemų ir paslaugų palaikymą, tiesioginį trikčių šalinimą ir analizę bei protingą sprendimų priėmimą, kad problemos būtų perduotos inžinerijos komandoms.

Žiūrėkite šį vaizdo įrašą, kuriame demonstruojama „Linux Foundation“ sertifikavimo programa.

Serija bus pavadinta „Pasirengimas LFCS („ Linux Foundation Certified Sysadmin “) nuo 1 iki 10 dalių ir apims šias„ Ubuntu “,„ CentOS “ir„ openSUSE “temas:

Šis įrašas yra 20-os pamokų serijos 1 dalis, kuri apims reikalingas sritis ir kompetencijas, reikalingas LFCS sertifikavimo egzaminui. Tai sakant, įsijunkite savo terminalą ir pradėkime.

Teksto srautų apdorojimas sistemoje „Linux“

„Linux“ laiko programų įvestį ir išvestį kaip simbolių srautus (arba sekas). Norėdami suprasti peradresavimą ir vamzdžius, pirmiausia turime suprasti tris svarbiausius įvesties/išvesties (įvesties ir išvesties) srautų tipus, kurie iš tikrųjų yra specialūs failai (pagal susitarimą UNIX ir Linux sistemose, duomenų srautai ir išoriniai įrenginiai arba įrenginių failai). taip pat laikomos įprastomis bylomis).

Skirtumas tarp > (peradresavimo operatorius) ir | (dujotiekio operatorius) yra tas, kad nors pirmasis sujungia komandą su failu, pastarasis - komandos išvestį su kita komandą.

# command > file
# command1 | command2

Kadangi peradresavimo operatorius sukuria arba perrašo failus tyliai, turime juos naudoti labai atsargiai ir niekada neklysti su dujotiekiu. Vienas iš „Linux“ ir „UNIX“ sistemų vamzdžių privalumų yra tai, kad nėra jokio tarpinio failo, susijusio su vamzdžiu - pirmosios komandos standartas nėra įrašomas į failą, o tada nuskaitomas antrosios komandos.

Šioms praktikos pratyboms naudosime eilėraštį „ Laimingas vaikas “ (anonimas autorius).

Pavadinimas sed yra trumpas srauto redaktorius. Tiems, kuriems šis terminas nėra žinomas, srauto redaktorius naudojamas pagrindinėms teksto transformacijoms atlikti įvesties sraute (faile arba įvestyje iš vamzdyno).

Pats pagrindinis (ir populiariausias) „sed“ vartojimas yra simbolių pakeitimas. Pradėsime nuo kiekvieno mažųjų raidžių y pakeitimo į DIDŽIAUSIOS DALYS Y ir išvesties peradresavimo į ahappychild2.txt . Žymė g nurodo, kad sedas turėtų pakeisti visus termino egzempliorius kiekvienoje failo eilutėje. Jei ši vėliava bus praleista, sed pakeis tik pirmąjį kiekvienos eilutės termino atsiradimą.

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

Jei norite ieškoti ar pakeisti specialų simbolį (pvz., /, \, & ), turite jo išvengti arba pakaitinės stygos su pasviruoju brūkšniu.

Pavyzdžiui, pakeisime žodį ir ampersandą. Tuo pačiu metu žodį pakeisime žodžiu jūs , kai pirmasis bus rastas eilutės pradžioje.

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

Pirmiau pateiktoje komandoje ^ (ženklas „caret“) yra gerai žinoma taisyklingoji išraiška, naudojama eilutės pradžiai žymėti.

Kaip matote, galime sujungti dvi ar daugiau pakeitimo komandų (ir jose naudoti taisyklingąsias išraiškas), atskirdami jas kabliataškiu ir įtraukdami rinkinį į atskiras kabutes.

Kitas „sed“ naudojimas yra pasirinktos failo dalies rodymas (arba ištrynimas). Šiame pavyzdyje parodysime pirmąsias 5 /var/log/messages eilutes nuo birželio 8 d.

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

Atminkite, kad pagal numatytuosius nustatymus sed spausdina kiekvieną eilutę. Mes galime nepaisyti šios elgsenos naudodami parinktį -n ir paskui liepti atsispausdinti (pažymėtą p ) tik tą failo dalį (arba vamzdį), kuri atitinka modelį (Pirmuoju atveju birželio 8 d. Eilutės pradžioje, o antruoju atveju - eilutės nuo 1 iki 5 imtinai).

Galiausiai gali būti naudinga tikrinant scenarijus ar konfigūracijos failus, norint patikrinti patį kodą ir palikti komentarus. Šis vienas linijinis paketas ištrina ( d ) tuščias eilutes arba tas, kurios prasideda # (simbolis | nurodo loginę reikšmę ARBA tarp dviejų įprastų posakiai).

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

Komanda uniq leidžia mums pranešti apie failo eilutes ar pašalinti jų kopijas, pagal nutylėjimą rašant „stdout“. Turime pažymėti, kad uniq neaptinka pasikartojančių linijų, nebent jos būtų gretimos. Taigi, uniq paprastai naudojamas kartu su ankstesniu rūšiuoti (kuris naudojamas tekstinių failų eilutėms rūšiuoti). Pagal numatytuosius nustatymus rūšiuoti pirmasis laukas (atskirtas tarpais) laikomas rakto lauku. Norėdami nurodyti kitą raktų lauką, turime naudoti parinktį -k .

Komanda du –sch/path/to/directory/* grąžina disko vietos naudojimą kiekvienam pakatalogiams ir failams nurodytame kataloge žmonėms suprantamu formatu (taip pat rodo bendrą kiekvieno katalogo skaičių) ir nerodo užsakykite išvestį pagal dydį, bet pagal pakatalogį ir failo pavadinimą. Norėdami naudoti rūšiavimą pagal dydį, galime naudoti šią komandą.

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

Galite suskaičiuoti įvykių skaičių žurnale pagal datą, liepdami uniq atlikti palyginimą naudodami pirmuosius 6 kiekvienos eilutės simbolius (-w 6) (kur nurodoma data) ir prieš kiekvieną išvesties eilutė pagal įvykių skaičių ( -c ) su šia komanda.

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

Galiausiai galite derinti rūšiuoti ir uniq (kaip paprastai yra). Apsvarstykite šį failą su aukotojų sąrašu, aukojimo data ir suma. Tarkime, kad mes norime žinoti, kiek yra unikalių donorų. Mes naudosime šią komandą, norėdami iškirpti pirmąjį lauką (laukus skiria dvitaškis), rūšiuoti pagal pavadinimą ir pašalinti pasikartojančias eilutes.

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

Taip pat skaitykite : 13 komandų „katė“ pavyzdžių

grep ieško teksto failų arba (komandų išvesties), ar nėra nurodytos reguliarios išraiškos, ir išleidžia bet kurią eilutę, kurioje yra atitikimas standartinei išvestiai.

Parodykite vartotojo gacanepa informaciją iš /etc/passwd , nepaisydami didžiųjų raidžių.

# grep -i gacanepa /etc/passwd

Rodyti visą /etc turinį, kurio pavadinimas prasideda rc , po kurio nurodomas bet kuris vienas skaičius.

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

Taip pat skaitykite : 12 komandų „grep“ pavyzdžių

Komanda tr gali būti naudojama norint išversti (pakeisti) ar ištrinti simbolius iš „stdin“ ir įrašyti rezultatą į „stdout“.

Faile sortuniq.txt pakeiskite visas mažąsias į didžiąsias.

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

Suspauskite ls –l išvesties skyriklį tik į vieną tarpą.

# ls -l | tr -s ' '

Komanda cut išskiria įvesties eilučių dalis (iš stdin ar failų) ir rodo rezultatą standartinėje išvestyje, remdamasi baitų skaičiumi (parinktis -b ), simboliais (< b> -c ) arba laukus ( -f ). Šiuo paskutiniu atveju (atsižvelgiant į laukus) numatytasis laukų skyriklis yra skirtukas, tačiau naudojant kitą parinktį -d galima nurodyti kitą skiriklį.

Išskleiskite vartotojo paskyras ir joms priskirtus numatytuosius apvalkalus iš /etc/passwd (parinktis –d leidžia mums nurodyti lauko ribotuvą ir –f jungiklis nurodo, kuris laukas (-ai) bus išgautas (-i).

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

Apibendrindami sukursime teksto srautą, susidedantį iš pirmojo ir trečiojo neužpildytų failų iš komandos paskutinis išvesties. Mes naudosime grep kaip pirmąjį filtrą, kad patikrintume, ar nėra vartotojo gacanepa seansų, tada suspauskite skiriklius tik vienoje vietoje ( tr -s '' ). Tada ištrauksime pirmąjį ir trečiąjį laukus su supjaustyti ir galiausiai surūšiuosime pagal antrąjį lauką (šiuo atveju IP adresai), rodantį unikalų.

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

Pirmiau nurodyta komanda parodo, kaip galima sujungti kelias komandas ir vamzdžius, kad gautume filtruotus duomenis pagal mūsų norus. Nesivaržykite paleisti jį dalimis, kad galėtumėte pamatyti išvestį, kuri perkeliama iš vienos komandos į kitą (beje, tai gali būti puiki mokymosi patirtis!).

Santrauka

Nors iš pirmo žvilgsnio šis pavyzdys (kartu su likusiais dabartinės mokymo programos pavyzdžiais) gali pasirodyti ne itin naudingas, jis yra puikus pradinis taškas pradedant eksperimentuoti su komandomis, kurios naudojamos kuriant, redaguojant ir manipuliuojant failais iš „Linux“ komandinė eilutė. Nedvejodami palikite savo klausimus ir komentarus žemiau - jie bus labai dėkingi!

  1. Apie LFCS
  2. Kodėl reikia gauti „Linux Foundation“ sertifikatą?
  3. Registruokitės į LFCS egzaminą