LFCS: Kako koristiti GNU sed naredbu za stvaranje, uređivanje i upravljanje datotekama u Linuxu - 1. dio


Linux Foundation najavio je LFCS (Linux Foundation Certified Sysadmin) certifikat, novi program čiji je cilj pomoći pojedincima iz cijelog svijeta da se certificiraju za osnovne i srednje administrativne zadatke administracije sustava za Linux sustave. To uključuje podršku pokrenutim sustavima i uslugama, zajedno s rješavanjem problema i analizom iz prve ruke, te pametno donošenje odluka za eskaliranje problema inženjerskim timovima.

Molimo pogledajte sljedeći videozapis koji demonstrira program zaklade Linux Foundation.

Serija će imati naslov Priprema za LFCS (Linux Foundation Certified Sysadmin) dijelove od 1 do 10 i pokrivat će sljedeće teme za Ubuntu, CentOS i openSUSE:

Ovaj je post prvi dio serije od 20 lekcija koja će obuhvatiti potrebne domene i kompetencije potrebne za LFCS certifikacijski ispit. To je rečeno, upalite svoj terminal i krenimo.

Obrada tekstualnih tokova u Linuxu

Linux ulaz i izlaz iz programa tretira kao tokove (ili sekvence) znakova. Da bismo započeli razumijevanje preusmjeravanja i cijevi, prvo moramo razumjeti tri najvažnije vrste I/O (ulaznih i izlaznih) tokova, koje su zapravo posebne datoteke (prema dogovoru u UNIX-u i Linuxu, tokovi podataka i periferne jedinice ili datoteke uređaja, također se tretiraju kao obične datoteke).

Razlika između > (operator preusmjeravanja) i | (operator cjevovoda) je u tome što dok prva povezuje naredbu s datotekom, druga povezuje izlaz naredbe s drugom naredba.

# command > file
# command1 | command2

Budući da operater preusmjeravanja datoteke tiho stvara ili prepisuje, moramo ga koristiti izuzetno oprezno i nikada ga ne smijemo zamijeniti s cjevovodom. Jedna od prednosti cijevi na Linuxu i UNIX sustavima je ta što ne postoji posredna datoteka koja je uključena u cijev - stdout prve naredbe ne zapisuje se u datoteku, a zatim čita druga naredba.

Za slijedeće vježbe upotrijebit ćemo pjesmu " Sretno dijete " (anonimni autor).

Naziv sed skraćenica je od uređivača streama. Za one koji nisu upoznati s tim pojmom, uređivač toka koristi se za izvođenje osnovnih transformacija teksta na ulaznom toku (datoteci ili unosu iz cjevovoda).

Najosnovnija (i najpopularnija) upotreba sed je zamjena znakova. Započet ćemo s promjenom svake pojave malih slova y u GLAVNO Y i preusmjeravanjem rezultata na ahappychild2.txt . Oznaka g označava da bi sed trebao izvršiti zamjenu za sve instance izraza u svakom retku datoteke. Ako je ova zastavica izostavljena, sed će zamijeniti samo prvo pojavljivanje pojma u svakom retku.

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

Ako želite potražiti ili zamijeniti specijalni znak (kao što je /, \, & ), trebate ga izbjeći, u izrazu ili zamjenske žice, s kosom crtom.

Na primjer, zamijenit ćemo riječ i znakom ampersand. Istodobno ćemo zamijeniti riječ I s Vi kad se prva nađe na početku retka.

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

U gornjoj naredbi ^ (znak karete) dobro je poznat regularni izraz koji se koristi za predstavljanje početka retka.

Kao što vidite, možemo kombinirati dvije ili više naredbi za zamjenu (i unutar njih koristiti regularne izraze) razdvajajući ih zarezom i zatvarajući skup unutar pojedinačnih navodnika.

Još jedna upotreba sed-a je prikazivanje (ili brisanje) odabranog dijela datoteke. U sljedećem ćemo primjeru prikazati prvih 5 redaka /var/log/messages od 8. lipnja.

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

Imajte na umu da po zadanom sed ispisuje svaki redak. To ponašanje možemo nadjačati opcijom -n , a zatim reći sed da ispisuje (označeno p ) samo dio datoteke (ili cijevi) koji odgovara uzorku (8. lipnja na početku retka u prvom slučaju i retci od 1. do 5. u drugom slučaju).

Napokon, tijekom pregleda skripti ili konfiguracijskih datoteka može biti korisno pregledati sam kod i izostaviti komentare. Sljedeća sedla s jednom linijom briše ( d ) prazne retke ili one koji počinju s # (znak | označava logičko ILI između dva regularna izrazi).

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

Naredba uniq omogućuje nam prijavljivanje ili uklanjanje duplikata linija u datoteci, a prema zadanim postavkama zapisuje se u stdout. Moramo napomenuti da uniq ne otkriva ponovljene retke ako nisu u susjedstvu. Dakle, uniq se obično koristi zajedno s prethodnim razvrstavanjem (koje se koristi za razvrstavanje redaka tekstualnih datoteka). Prema zadanim postavkama sortiranje uzima prvo polje (odvojeno razmacima) kao ključno polje. Da bismo odredili drugo polje ključa, trebamo upotrijebiti opciju -k .

Naredba du –sch/path/to/directory/* vraća upotrebu prostora na disku po poddirektorijima i datotekama unutar navedenog direktorija u čitljivom formatu (također prikazuje ukupan broj po direktoriju), a ne raspored rezultata prema veličini, ali prema poddirektorijumu i nazivu datoteke. Sljedeću naredbu možemo koristiti za sortiranje po veličini.

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

Broj događaja u zapisniku možete izbrojati prema datumu tako što ćete uniq -u izvršiti usporedbu pomoću prvih 6 znakova (-w 6) svakog retka (gdje je datum naveden) i prefiksom svakog izlazni redak prema broju pojavljivanja ( -c ) sa sljedećom naredbom.

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

Napokon, možete kombinirati sortiranje i uniq (kao što su obično). Razmotrite sljedeću datoteku s popisom donatora, datumom donacije i iznosom. Pretpostavimo da želimo znati koliko jedinstvenih davatelja postoji. Sljedećom ćemo naredbom izrezati prvo polje (polja su razdvojena dvotočkom), razvrstati po imenu i ukloniti dvostruke retke.

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

Pročitajte također : 13 primjera naredbi "mačka"

grep pretražuje tekstualne datoteke ili (izlaz naredbe) za pojavu određenog regularnog izraza i izbacuje bilo koji redak koji sadrži podudaranje sa standardnim izlazom.

Prikažite podatke iz /etc/passwd za korisnika gacanepa, zanemarujući slučaj.

# grep -i gacanepa /etc/passwd

Prikažite sav sadržaj /itd. čije ime počinje s rc iza kojeg slijedi bilo koji pojedinačni broj.

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

Pročitajte također : 12 primjera naredbi "grep"

Naredba tr može se koristiti za prijevod (promjenu) ili brisanje znakova iz stdina i zapisivanje rezultata u stdout.

Promijenite sve male u velike u datoteci sortuniq.txt.

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

Stisnite graničnik u izlazu ls –l na samo jedan razmak.

# ls -l | tr -s ' '

Naredba izrezati izdvaja dijelove ulaznih redaka (iz stdina ili datoteka) i prikazuje rezultat na standardnom izlazu, na temelju broja bajtova (opcija -b ), znakova (< b> -c ) ili polja ( -f ). U ovom posljednjem slučaju (na temelju polja), zadani je separator polja kartica, ali drugačiji graničnik može se odrediti pomoću opcije -d .

Izdvojite korisničke račune i zadane ljuske dodijeljene im iz /etc/passwd (opcija –d omogućuje nam da odredimo graničnik polja, a –f prekidač pokazuje koja će se polja izdvojiti.

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

Rezimirajući, stvorit ćemo tekstualni tok koji se sastoji od prve i treće neprazne datoteke izlaza posljednje naredbe. Upotrijebit ćemo grep kao prvi filtar za provjeru sesija korisnika gacanepa , a zatim iscijediti graničnike na samo jedan prostor ( tr -s '' ). Dalje ćemo izdvojiti prvo i treće polje s izrezati , a na kraju sortirati po drugom polju (u ovom slučaju IP adresama) koje pokazuju jedinstvena.

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

Gornja naredba pokazuje kako se više naredbi i cijevi mogu kombinirati kako bi se dobili filtrirani podaci prema našim željama. Slobodno ga također pokrenite po dijelovima kako biste vidjeli izlaz koji se cjevovodi od jedne do druge naredbe (ovo usput može biti izvrsno iskustvo učenja!).

Sažetak

Iako se ovaj primjer (zajedno s ostatkom primjera u trenutnom vodiču) na prvi pogled ne čini vrlo korisnim, oni su lijepa polazna točka za započinjanje eksperimentiranja s naredbama koje se koriste za stvaranje, uređivanje i upravljanje datotekama s Linuxa naredbeni redak. Slobodno ostavite svoja pitanja i komentare u nastavku - oni će vam biti vrlo zahvalni!

  1. O LFCS-u
  2. Zašto dobiti certifikat Linux Foundation?
  3. Prijavite se za LFCS ispit