LFCS: Hvernig á að nota GNU sed Command til að búa til, breyta og vinna með skrár í Linux - Part 1


Linux Foundation tilkynnti LFCS (Linux Foundation Certified Sysadmin) vottunina, nýtt forrit sem miðar að því að hjálpa einstaklingum um allan heim að fá vottun í grunn- og millistigsstjórnunarverkefnum fyrir Linux kerfi. Þetta felur í sér stuðning við keyrandi kerfi og þjónustu, ásamt fyrstu hendi bilanaleit og greiningu, og snjalla ákvarðanatöku til að stigmagna mál til verkfræðiteyma.

Vinsamlegast horfðu á eftirfarandi myndband sem sýnir um Linux Foundation Certification Program.

Þættirnir munu bera titilinn Undirbúningur fyrir LFCS (Linux Foundation Certified Sysadmin) hlutar 1 til 10 og fjalla um eftirfarandi efni fyrir Ubuntu, CentOS og openSUSE:

Þessi færsla er 1. hluti af 20 kennslubókaröð, sem mun ná yfir nauðsynleg lén og hæfni sem krafist er fyrir LFCS vottunarprófið. Sem sagt, kveiktu á flugstöðinni þinni og við skulum byrja.

Vinnsla textastrauma í Linux

Linux meðhöndlar inntak og úttak frá forritum sem strauma (eða raðir) af stöfum. Til að byrja að skilja tilvísun og pípur, verðum við fyrst að skilja þrjár mikilvægustu tegundir I/O (Input and Output) strauma, sem eru í raun sérstakar skrár (samkvæmt venju í UNIX og Linux, gagnastraumar og jaðartæki, eða tækjaskrár, eru einnig meðhöndluð sem venjulegar skrár).

Munurinn á > (tilvísunartæki) og | (leiðsla stjórnandi) er sá að á meðan sú fyrri tengir skipun við skrá, þá tengir sú síðarnefnda úttak skipunar við aðra skipun.

# command > file
# command1 | command2

Þar sem tilvísunarstjórnandinn býr til eða skrifar yfir skrár í hljóði, verðum við að nota það með mikilli varúð og aldrei misskilja það með leiðslu. Einn kostur við pípur á Linux og UNIX kerfum er að það er engin milliskrá tengd pípu - stdout fyrstu skipunarinnar er ekki skrifuð í skrá og síðan lesin með annarri skipuninni.

Fyrir eftirfarandi æfingar munum við nota ljóðið \Gleðilegt barn (nafnlaus höfundur).

Nafnið sed er stutt fyrir straumritara. Fyrir þá sem ekki þekkja hugtakið er straumritari notaður til að framkvæma grunntextabreytingar á inntaksstraumi (skrá eða inntak úr leiðslu).

Grunn (og vinsælasta) notkun sed er að skipta út stöfum. Við byrjum á því að breyta hverju tilviki fyrir lágstafina y í HÁSTASTAF Y og beina úttakinu í ahappychild2.txt. g fáninn gefur til kynna að sed ætti að skipta út fyrir öll tilvik hugtaks í hverri skráarlínu. Ef þessum fána er sleppt mun sed aðeins koma í stað fyrsta tilviks liðs á hverri línu.

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

Ef þú vilt leita að eða skipta um sérstaf (eins og /, \, &) þarftu að flýja það, í hugtakinu eða skiptistrengir, með skástrik.

Til dæmis munum við skipta út orðinu og fyrir ampermerki. Á sama tíma munum við skipta út orðinu I fyrir Þú þegar það fyrsta finnst í upphafi línu.

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

Í skipuninni hér að ofan er ^ (caret merki) vel þekkt regluleg tjáning sem er notuð til að tákna upphaf línu.

Eins og þú sérð getum við sameinað tvær eða fleiri staðsetningarskipanir (og notað reglubundnar orðasambönd inni í þeim) með því að aðgreina þær með semíkommu og setja mengið innan gæsalappa.

Önnur notkun sed er að sýna (eða eyða) valinn hluta af skrá. Í eftirfarandi dæmi munum við sýna fyrstu 5 línurnar af /var/log/messages frá 8. júní.

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

Athugaðu að sjálfgefið, sed prentar hverja línu. Við getum hnekið þessari hegðun með -n valmöguleikanum og síðan sagt sed að prenta (táknað með p) aðeins þann hluta skráarinnar (eða pípunnar) sem passar við mynstrið (8. júní í upphafi línu í fyrra tilvikinu og línur 1 til og með 5 í seinna tilvikinu).

Að lokum getur það verið gagnlegt þegar forskriftir eða stillingarskrár eru skoðaðar að skoða kóðann sjálfan og skilja eftir athugasemdir. Eftirfarandi sed einlína eyðir (d) auðum línum eða þeim sem byrja á # (stafurinn | gefur til kynna boolean OR á milli tveggja venjulegra tjáningar).

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

Skipunin uniq gerir okkur kleift að tilkynna eða fjarlægja tvíteknar línur í skrá og skrifa sjálfgefið í stdout. Við verðum að hafa í huga að uniq greinir ekki endurteknar línur nema þær séu aðliggjandi. Þannig er uniq almennt notað ásamt flokkun á undan (sem er notað til að flokka línur af textaskrám). Sjálfgefið er að flokka tekur fyrsta reitinn (aðskilinn með bilum) sem lykilreit. Til að tilgreina annan lykilreit þurfum við að nota -k valkostinn.

du –sch /path/to/directory/* skipunin skilar plássnotkun fyrir hverja undirmöppur og skrár innan tilgreindrar möppu á mönnum læsilegu sniði (sýnir einnig heildarfjölda fyrir hverja möppu) og gerir það ekki pantaðu úttakið eftir stærð, en eftir undirmöppu og skráarheiti. Við getum notað eftirfarandi skipun til að flokka eftir stærð.

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

Þú getur talið fjölda atburða í skrá eftir dagsetningu með því að segja uniq að framkvæma samanburðinn með því að nota fyrstu 6 stafina (-w 6) í hverri línu (þar sem dagsetningin er tilgreind), og setja hverja forskeyti úttakslínu eftir fjölda tilvika (-c) með eftirfarandi skipun.

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

Að lokum geturðu sameinað sort og uniq (eins og þau eru venjulega). Íhugaðu eftirfarandi skrá með lista yfir gefendur, dagsetningu framlags og upphæð. Segjum að við viljum vita hversu margir einstakir gjafar eru. Við munum nota eftirfarandi skipun til að klippa fyrsta reitinn (reitir eru afmarkaðir með tvípunkti), flokka eftir nafni og fjarlægja tvíteknar línur.

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

Lestu líka: 13 „cat“ stjórnunardæmi

grep leitar í textaskrám eða (skipunarúttak) að tiltekinni reglulegri segð og gefur út hvaða línu sem er sem samsvarar venjulegu úttaki.

Birta upplýsingarnar frá /etc/passwd fyrir notanda gacanepa, hunsa hástafi.

# grep -i gacanepa /etc/passwd

Sýndu allt innihald /etc þar sem nafnið byrjar á rc á eftir einhverri einni tölu.

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

Lestu líka: 12 „grep“ stjórnunardæmi

tr skipunina er hægt að nota til að þýða (breyta) eða eyða stöfum úr stdin, og skrifa niðurstöðuna í stdout.

Breyttu öllum lágstöfum í hástafi í sortuniq.txt skránni.

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

Kreistu afmörkunarmerkið í úttakinu ls –l í aðeins eitt bil.

# ls -l | tr -s ' '

cut skipunin dregur út hluta af innsláttarlínum (úr stdin eða skrám) og sýnir niðurstöðuna á venjulegu úttaki, byggt á fjölda bæta (-b valmöguleiki), stöfum (< b>-c), eða reiti (-f). Í þessu síðasta tilviki (byggt á reitum) er sjálfgefinn reitaskilnaður flipi, en hægt er að tilgreina annan afmörkun með því að nota -d valkostinn.

Dragðu út notendareikninga og sjálfgefna skeljar sem þeim er úthlutað úr /etc/passwd (valkosturinn –d gerir okkur kleift að tilgreina reitafmarkið og –f rofi gefur til kynna hvaða reitir verða teknir út.

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

Í stuttu máli munum við búa til textastraum sem samanstendur af fyrstu og þriðju óauðu skránni af framleiðslu síðasta skipunarinnar. Við munum nota grep sem fyrstu síu til að leita að lotum notanda gacanepa og kreista síðan afmörkun í aðeins eitt bil (tr -s ' ' ). Næst munum við draga út fyrsta og þriðja reitinn með klippa og að lokum raða eftir öðrum reitnum (IP tölur í þessu tilfelli) sem sýnir einstakt.

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

Ofangreind skipun sýnir hvernig hægt er að sameina margar skipanir og pípur til að fá síuð gögn í samræmi við óskir okkar. Ekki hika við að keyra það líka eftir hlutum, til að hjálpa þér að sjá úttakið sem er flutt frá einni skipun til annarrar (þetta getur verið frábær lærdómsreynsla, við the vegur!).

Samantekt

Þó að þetta dæmi (ásamt restinni af dæmunum í núverandi kennslu) virðist kannski ekki mjög gagnlegt við fyrstu sýn, þá eru þau góður upphafspunktur til að byrja að gera tilraunir með skipanir sem eru notaðar til að búa til, breyta og vinna með skrár frá Linux skipanalínu. Ekki hika við að skilja eftir spurningar þínar og athugasemdir hér að neðan - þær verða vel þegnar!

  1. Um LFCS
  2. Af hverju að fá Linux Foundation vottun?
  3. Skráðu þig í LFCS prófið