15 kasulikku käsunõuannet Linuxi igapäevaste administreerimisülesannete jaoks


Iga süsteemiadministraator peab igapäevaselt tegelema lihttekstifailidega. Teadmine, kuidas teatud jaotisi vaadata, kuidas sõnu asendada ja kuidas nendest failidest sisu filtreerida, on oskused, mis teil peavad olema käepärast, ilma et peaksite Google'i otsingut tegema.

Selles artiklis vaatame üle tuntud voo redaktori sed ja jagame 15 näpunäidet selle kasutamiseks varem mainitud eesmärkide saavutamiseks ja palju muud.

1. Dokumendi ridade vahemiku vaatamine

Sellised tööriistad nagu pea ja saba võimaldavad meil vaadata faili alaosa või ülaosa. Mis siis, kui peame keskel olevat osa vaatama? Järgmine sed-lineer tagastab rida 5 kuni 10 saidilt myfile.txt:

# sed -n '5,10p' myfile.txt

2. Kogu faili vaatamine, välja arvatud antud vahemik

Teisest küljest on võimalik, et soovite printida kogu faili, välja arvatud teatud vahemik. Ridade 20 kuni 35 välistamiseks failist myfile.txt tehke järgmist.

# sed '20,35d' myfile.txt

3. Mitt järjestikuste ridade ja vahemike vaatamine

Võimalik, et teid huvitavad järjestikuste ridade komplekt või rohkem kui üks vahemik. Kuvame read myFile.txt ridu 5–7 ja 10–13:

# sed -n -e '5,7p' -e '10,13p' myfile.txt

Nagu näete, võimaldab -e valik meil teostada iga vahemiku jaoks antud toimingu (antud juhul joonte printimise).

4. Sõnade või märkide asendamine (põhiline asendus)

Sõna version iga eksemplari asendamiseks story -ga failis myfile.txt tehke järgmist.

# sed 's/version/story/g' myfile.txt

Lisaks võite kaaluda tähtkirjade ignoreerimiseks gi asemel g :

# sed 's/version/story/gi' myfile.txt

Mitme tühja koha asendamiseks ühe tühikuga kasutame ip route show väljundit ja torujuhet:

# ip route show | sed 's/  */ /g'

Võrrelge ip route show väljundit torujuhtmega ja ilma:

5. Sõnade või märkide asendamine vahemikus

Kui olete huvitatud sõnade asendamisest ainult reavahemikus (näiteks 30–40), saate teha järgmist.

# sed '30,40 s/version/story/g' myfile.txt

Muidugi saate vahemiku asemel ühe rea tähistada vastava numbri kaudu.

6. Regulaaravaldiste kasutamine (täiustatud asendamine) - I

Mõnikord laaditakse konfiguratsioonifailidesse kommentaare. Kuigi see on kindlasti kasulik, võib osutuda kasulikuks mõnikord ainult konfiguratsioonidirektiivide kuvamine, kui soovite neid kõiki ühe pilguga vaadata.

Tühjade või # algavate ridade eemaldamiseks Apache'i konfiguratsioonifailist tehke järgmist.

# sed '/^#\|^$\| *#/d' httpd.conf

Märkmärk, millele järgneb numbrimärk (^#) , näitab rea algust, samas kui ^$ tähistab tühje ridu. Vertikaalsed ribad tähistavad boolean toiminguid, samas kui tahapoole kaldkriipsu kasutatakse vertikaalsete ribade eest pääsemiseks.

Sel konkreetsel juhul on Apache'i konfiguratsioonifailil read, mille # ’s pole mõne rea alguses, nii et ka nende eemaldamiseks kasutatakse * # .

7. Regulaaravaldiste kasutamine (täiustatud asendamine) - II

Suure- või väiketähega algava sõna asendamiseks teise sõnaga võime kasutada ka sed. Illustreerimiseks asendame myfile.txt-s sõna zip või Zip rariga:

# sed 's/[Zz]ip/rar/g' myfile.txt

8. Antud mustriga joonte vaatamine

Seedi teine kasutusala on failide ridade printimine, mis vastavad antud regulaaravaldisele. Näiteks võime olla huvitatud 2. juulil toimunud autoriseerimis- ja autentimistoimingute vaatamisest vastavalt CentOS 7 serveris olevale/var/log/secure logile.

Sel juhul on otsitav muster iga rea alguses 2. juuli:

# sed -n '/^Jul  1/ p' /var/log/secure

9. Tühikute sisestamine failidesse

Sediga saame faili lisada ka tühjad read (tühjad read) iga tühja rea jaoks. Lihtsa tekstifaili LICENSE kohta ühe teise rea lisamiseks tehke järgmist.

# sed G myfile.txt

Kahe tühja rea sisestamiseks tehke järgmist.

# sed 'G;G' myfile.txt

Kui soovite lisada veel tühje ridu, lisage semikooloniga eraldatud suurtäht G. Järgmine pilt illustreerib selles näpunäites toodud näidet:

See näpunäide võib olla kasulik, kui soovite vaadata suurt konfiguratsioonifaili. Tühja ruumi lisamine igal teisel real ja väljundi torustik vähemale tulemuseks on sõbralikum lugemiskogemus.

10. Dos2unixi jäljendamine koos redigeerimisega

Programm dos2unix teisendab Windowsi/Maci vormindamisest lihttekstifailid Unixi/Linuxi, eemaldades varjatud uue rea märgid, mida mõned nendel platvormidel kasutatavad tekstiredaktorid sisestasid. Kui seda pole teie Linuxi süsteemi installitud, saate selle funktsionaalsuse installimise asemel matkida sed-iga.

Vasakpoolsel pildil näeme mitut DOS-i uue rea märki (^M) , mis hiljem eemaldati:

# sed -i 's/\r//' myfile.txt

Pange tähele, et valik -i näitab kohapealset muutmist. Siis ei tagastata muudatusi ekraanile, vaid need salvestatakse faili.

Märkus. Faili redigeerimisel vimiredaktoris saate Ctrl + V ja Ctrl + M abil sisestada DOS-i uue rea märke.

11. Algse faili kohapealne redigeerimine ja varundamine

Eelmises näpunäites kasutasime faili muutmiseks sed-i, kuid algset faili ei salvestatud. Mõnikord on mõistlik igaks juhuks originaalfaili varukoopia salvestada.

Selleks märkige valikule -i järgnev järelliide (üksikute jutumärkide sees), mida kasutatakse originaalfaili ümbernimetamiseks.

Järgmises näites asendame kõik selle või selle (juhtumit ignoreerides) eksemplarid failis myfile.txt olevaga ja salvestame algse faili failina myfile.txt.orig.

Lõpuks kasutame diff-utiliiti mõlema faili erinevuste tuvastamiseks:

# sed -i'.orig' 's/this/that/gi' myfile.txt

12. Sõnapaaride vahetamine

Oletame, et teil on täisnimesid sisaldav fail vormingus Eesnimi, Perekonnanimi. Faili piisavaks töötlemiseks võiksite vahetada perekonnanime ja eesnime.

Sedaga saame seda üsna lihtsalt teha:

# sed 's/^\(.*\),\(.*\)$/\, /g' names.txt

Ülaltoodud pildil näeme, et sulud, olles erimärgid, tuleb kõrvale jätta, nagu ka numbrid 1 ja 2.

Need numbrid tähistavad esiletõstetud regulaaravaldisi (mis peavad ilmuma sulgudes):

  1. 1 tähistab iga rea algust kuni komani.
  2. 2 on kohatäide kõigele, mis on koma otsas rea lõpus.

Soovitud väljund on näidatud vormingus SecondColumn (perekonnanimi) + koma + tühik + FirstColumn (eesnimi). Muutke see julgelt igale soovile.

13. Sõnade asendamine ainult siis, kui leitakse eraldi vaste

Mõnikord pole antud sõna kõigi või juhuslikult mõne eksemplari asendamine just see, mida me vajame. Võib-olla peame asenduse tegema, kui leitakse eraldi vaste.

Näiteks võiksime alguse stopiga asendada ainult siis, kui samast reast leitakse sõna teenused. Selles stsenaariumis juhtub järgmine:

We need to start partying at work,
but let’s remember to start all services first.

Esimeses reas ei asendata algust stoppiga, kuna sõna teenused ei esine selles reas, erinevalt teisest reast.

# sed '/services/ s/start/stop/g' msg.txt

14. Tehes kaks või enam asendust korraga

Saate kombineerida kaks või enam asendust ühe sed-käsu. Asendame myfile.txt-s sõnad, mis ja rida, vastavalt selle ja salmiga.

Pange tähele, kuidas seda saab teha, kasutades tavalist sed-asenduskäsku, millele järgneb semikoolon ja teine asenduskäsk:

# sed -i 's/that/this/gi;s/line/verse/gi' myfile.txt

Seda näpunäidet illustreerib järgmine pilt:

15. sed- ja muude käskude ühendamine

Muidugi, sed-i saab võimsamate käskude loomiseks kombineerida teiste tööriistadega. Kasutagem näiteks näpunäidet nr 4 toodud näiteid ja eraldage oma IP-aadress käsu ip route väljundist.

Alustame ainult selle rea printimisega, kus on sõna src . Seejärel teisendame mitu tühikut üheks. Lõpuks lõikame 9. välja (võttes arvesse eraldajana ühte tühikut), kus asub IP-aadress:

# ip route show | sed -n '/src/p' | sed -e 's/  */ /g' | cut -d' ' -f9

Allolev pilt illustreerib ülaltoodud käsu kõiki samme:

Kokkuvõte

Selles juhendis oleme jaganud 15 sed-nippi ja nippi, mis aitavad teil igapäevaseid süsteemihalduse ülesandeid täita. Kas on mõni muu näpunäide, mida te regulaarselt kasutate ja mida soovite meiega ja ülejäänud kogukonnaga jagada?

Kui jah, andke meile sellest teada, kasutades allolevat kommentaarivormi. Samuti on teretulnud küsimused ja kommentaarid - ootame teid huviga!