LFCS: Kako uporabiti ukaz GNU sed za ustvarjanje, urejanje in upravljanje datotek v Linuxu - 1. del


Fundacija Linux je objavila certifikat LFCS (Linux Foundation Certified Sysadmin), nov program, katerega cilj je pomagati posameznikom po vsem svetu, da pridobijo certifikat za osnovne in vmesne naloge skrbništva sistema za sisteme Linux. To vključuje podporo delujočim sistemom in storitvam, skupaj z neposrednim odpravljanjem težav in analizo ter pametno odločanje, s katerim se težave prenašajo na inženirske ekipe.

Oglejte si naslednji video, ki prikazuje program certificiranja programa Linux Foundation.

Serija bo nosila naslov Priprava na LFCS (Linux Foundation Certified Sysadmin) od 1. do 10. dela in zajema naslednje teme za Ubuntu, CentOS in openSUSE:

Ta objava je 1. del serije z 20 vajami, ki bo zajela potrebna področja in kompetence, ki so potrebne za izpit za certificiranje LFCS. Kot rečeno, zaženite terminal in začnimo.

Obdelava besedilnih tokov v Linuxu

Linux vhod in izhod iz programov obravnava kot tokove (ali zaporedja) znakov. Za začetek razumevanja preusmeritve in cevi moramo najprej razumeti tri najpomembnejše vrste V/I (vhodnih in izhodnih) tokov, ki so v resnici posebne datoteke (po dogovoru v UNIX in Linux, podatkovni tokovi in zunanje naprave ali datoteke naprav, se obravnavajo tudi kot navadne datoteke).

Razlika med > (operater preusmeritve) in | (operater cevovoda) je, da medtem ko prvi poveže ukaz z datoteko, drugi poveže izhod ukaza z drugim ukaz.

# command > file
# command1 | command2

Ker operater preusmeritve datoteke tiho ustvari ali prepiše, ga moramo uporabljati zelo previdno in ga nikoli ne zamenjati s cevovodom. Ena od prednosti cevovodov v sistemih Linux in UNIX je, da s cevjo ni vmesne datoteke - stdout prvega ukaza se ne zapiše v datoteko in nato prebere drugi ukaz.

Za naslednje vaje bomo uporabili pesem\" Srečen otrok " (anonimni avtor).

Ime sed je okrajšava za urejevalnik tokov. Za tiste, ki ne poznajo izraza, se z urejevalnikom tokov izvajajo osnovne transformacije besedila v vhodnem toku (datoteka ali vnos iz cevovoda).

Najbolj osnovna (in priljubljena) uporaba sed je zamenjava znakov. Začeli bomo s spreminjanjem vsake pojavitve male črke y v GLAVNO Y in preusmeritev izhoda na ahappychild2.txt . Oznaka g označuje, da bi moral sed v vseh vrsticah datoteke nadomestiti vse primere izraza. Če je ta zastavica izpuščena, bo sed zamenjal samo prvi pojav izraza v vsaki vrstici.

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

Če želite poiskati ali nadomestiti poseben znak (na primer /, \, & ), ga morate v besedilu pobegniti ali nadomestne strune s poševnico nazaj.

Na primer, zamenjali bomo besedo in za znak &. Hkrati bomo besedo I zamenjali z vi , ko bo na začetku vrstice prvi.

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

V zgornjem ukazu je ^ (znak za oznako) dobro znan regularni izraz, ki se uporablja za predstavitev začetka vrstice.

Kot lahko vidite, lahko kombiniramo dva ali več nadomestnih ukazov (in v njih uporabljamo regularne izraze), tako da jih ločimo s podpičjem in nabor postavimo znotraj enojnih narekovajev.

Druga uporaba programa sed je prikaz (ali brisanje) izbranega dela datoteke. V naslednjem primeru bomo od 8. junija prikazali prvih 5 vrstic /var/log/messages .

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

Upoštevajte, da sed privzeto natisne vsako vrstico. To vedenje lahko preglasimo z možnostjo -n in nato naročimo, naj natisne (označeno z p ) le tisti del datoteke (ali cev), ki ustreza vzorcu (8. junij na začetku vrstice v prvem primeru in vključno z vrsticami od 1 do 5 v drugem primeru).

Nazadnje je med pregledovanjem skriptov ali konfiguracijskih datotek lahko koristno pregledati samo kodo in izpustiti komentarje. Naslednja sed ena črta izbriše ( d ) prazne vrstice ali vrstice, ki se začnejo z # (znak | označuje logično ALI med dvema običajnima izrazi).

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

Ukaz uniq nam omogoča poročanje ali odstranjevanje podvojenih vrstic v datoteki, privzeto pišem v stdout. Upoštevati moramo, da uniq ne zazna ponavljajočih se vrstic, razen če so sosednje. Tako se uniq pogosto uporablja skupaj s predhodnim razvrščanjem (ki se uporablja za razvrščanje vrstic besedilnih datotek). Privzeto razvrsti prvo polje (ločeno s presledki) kot ključno polje. Če želite določiti drugo ključno polje, moramo uporabiti možnost -k .

Ukaz du –sch/path/to/directory/* vrne zasedenost diskovnega prostora na podimenike in datoteke v določenem imeniku v čitljivi obliki (prav tako prikazuje skupni znesek na imenik) in ne razvrstite izhod po velikosti, vendar po podimeniku in imenu datoteke. Za razvrščanje po velikosti lahko uporabimo naslednji ukaz.

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

Število dogodkov v dnevniku lahko preštejete po datumu, tako da uniq izvedete primerjavo z uporabo prvih 6 znakov (-w 6) vsake vrstice (kjer je naveden datum) in pred vsako predpono izhodno vrstico s številom pojavitev ( -c ) z naslednjim ukazom.

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

Končno lahko kombinirate razvrsti in uniq (kot sta običajno). Preglejte naslednjo datoteko s seznamom darovalcev, datumom darovanja in zneskom. Recimo, da želimo vedeti, koliko edinstvenih darovalcev je. Z naslednjim ukazom bomo izrezali prvo polje (polja so ločena s dvopičjem), razvrstili po imenu in odstranili podvojene vrstice.

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

Preberite tudi : 13 primerov ukazov "mačka"

grep išče besedilne datoteke ali (izhod ukaza) za pojav določenega regularnega izraza in izpiše katero koli vrstico, ki vsebuje ujemanje s standardnim izhodom.

Prikažite podatke iz /etc/passwd za uporabnika gacanepa, pri čemer ne upoštevajte velikih in malih črk.

# grep -i gacanepa /etc/passwd

Pokaži vso vsebino /itd , katere ime se začne z rc , ki mu sledi katera koli posamezna številka.

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

Preberite tudi : 12 primerov ukazov »grep«

Z ukazom tr lahko prevedete (spremenite) ali izbrišete znake iz stdina in rezultat zapišete v stdout.

V datoteki sortuniq.txt spremenite vse male črke v velike.

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

Stisnite ločilo v izhodnem znaku ls –l na samo en presledek.

# ls -l | tr -s ' '

Ukaz izreži izvleče dele vhodnih vrstic (iz stdina ali datotek) in prikaže rezultat v standardnem izhodu na podlagi števila bajtov (možnost -b ), znakov (< b> -c ) ali polja ( -f ). V tem zadnjem primeru (na podlagi polj) je privzeto ločilo polj zavihek, vendar lahko z uporabo -d določite drugačen ločilo.

Iz /etc/passwd izvlecite uporabniške račune in privzete lupine, ki so jim dodeljene (možnost –d nam omogoča, da določimo ločilo polja, in –f stikalo označuje, katera polja bodo izvlečena.

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

Če povzamemo, ustvarili bomo besedilni tok, sestavljen iz prve in tretje neprazne datoteke izhoda zadnjega ukaza. Grep bomo uporabili kot prvi filter za preverjanje sej uporabnika gacanepa , nato ločila stisnili na samo en presledek ( tr -s '' ). Nato bomo prvo in tretje polje izvlekli z cut in na koncu razvrstili po drugem polju (v tem primeru naslovi IP), ki prikazuje edinstvena.

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

Zgornji ukaz prikazuje, kako je mogoče kombinirati več ukazov in cevi, da dobimo filtrirane podatke v skladu z našimi željami. Zaženite ga tudi po delih, da boste lažje videli izhodne podatke, ki se pretakajo od enega do drugega ukaza (mimogrede, to je lahko odlična učna izkušnja!).

Povzetek

Čeprav se ta primer (skupaj s preostalimi primeri v trenutni vadnici) na prvi pogled ne zdi zelo uporaben, so lepo izhodišče za začetek eksperimentiranja z ukazi, ki se uporabljajo za ustvarjanje, urejanje in upravljanje datotek iz Linuxa. ukazna vrstica. Vprašanja in komentarje lahko pustite spodaj - zelo bodo hvaležni!

  1. O LFCS
  2. Zakaj pridobiti certifikat Linux Foundation?
  3. Prijavite se na izpit LFCS