15 Gagnlegar sed stjórnráð og brellur fyrir dagleg Linux kerfisstjórnunarverkefni


Sérhver kerfisstjóri þarf að takast á við einfaldar textaskrár daglega. Að vita hvernig á að skoða ákveðna hluta, hvernig á að skipta út orðum og hvernig á að sía efni úr þessum skrám eru færni sem þú þarft að hafa við höndina án þess að þurfa að gera Google leit.

Í þessari grein munum við fara yfir sed, hinn þekkta straumritstjóra, og deila 15 ráðum til að nota hann til að ná markmiðunum sem nefnd voru áðan og fleira.

1. Skoðaðu úrval af línum skjalsins

Verkfæri eins og höfuð og hali gera okkur kleift að skoða botn eða topp skráar. Hvað ef við þurfum að skoða hluta í miðjunni? Eftirfarandi sed one-liner mun skila línum 5 til 10 úr myfile.txt:

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

2. Skoða alla skrána nema tiltekið svið

Á hinn bóginn er mögulegt að þú viljir prenta alla skrána nema ákveðið svið. Til að útiloka línur 20 til 35 frá myfile.txt skaltu gera:

# sed '20,35d' myfile.txt

3. Skoða línur og svið sem ekki eru í röð

Það er mögulegt að þú hafir áhuga á settum af línum sem ekki eru í röð, eða á fleiri en einu sviði. Sýnum línur 5-7 og 10-13 úr myfile.txt:

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

Eins og þú sérð gerir -e valmöguleikinn okkur kleift að framkvæma tiltekna aðgerð (í þessu tilviki, prenta línur) fyrir hvert svið.

4. Skipta út orðum eða stöfum (einkennisskipti)

Til að skipta út hverju tilviki orðsins útgáfa fyrir saga í myfile.txt skaltu gera:

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

Að auki gætirðu viljað íhuga að nota gi í stað g til að hunsa hástafi:

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

Til að skipta út mörgum auðum rýmum fyrir eitt bil, munum við nota úttakið af ip route show og leiðslu:

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

Berðu saman úttak ip leiðarsýningar með og án leiðslunnar:

5. Skipta út orðum eða stöfum innan sviðs

Ef þú hefur áhuga á að skipta aðeins út orðum innan línubils (td 30 til 40), geturðu gert:

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

Auðvitað er hægt að gefa til kynna eina línu í gegnum samsvarandi númer hennar í stað sviðs.

6. Notkun reglulegra segða (háþróaða útskiptingu) – I

Stundum eru stillingarskrár hlaðnar athugasemdum. Þó að þetta sé vissulega gagnlegt, getur verið gagnlegt að birta aðeins stillingarleiðbeiningarnar stundum ef þú vilt skoða þær allar í fljótu bragði.

Til að fjarlægja tómar línur eða þær sem byrja á # úr Apache stillingarskránni skaltu gera:

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

Hringmerkið á eftir tölumerkinu (^#) gefur til kynna upphaf línu, en ^$ táknar auðar línur. Lóðréttu strikin gefa til kynna Boole-aðgerðir, en skástrikið er notað til að komast út úr lóðréttu strikunum.

Í þessu tiltekna tilviki hefur Apache stillingarskráin línur með #'s ekki í upphafi sumra lína, svo *# er notað til að fjarlægja þær líka.

7. Notkun venjulegra segða (háþróuð útskiptingu) – II

Til að skipta út orði sem byrjar á hástöfum eða lágstöfum fyrir annað orð, getum við líka notað sed. Til að skýra það skulum við skipta út orðinu zip eða Zip fyrir rar í myfile.txt:

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

8. Skoða línur sem innihalda með tilteknu mynstri

Önnur notkun sed felst í því að prenta línurnar úr skrá sem passa við tiltekna reglubundna tjáningu. Til dæmis gætum við haft áhuga á að skoða heimildar- og auðkenningaraðgerðir sem áttu sér stað þann 2. júlí samkvæmt /var/log/secure skránni á CentOS 7 netþjóni.

Í þessu tilviki er mynstrið til að leita að 2. júlí í upphafi hverrar línu:

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

9. Að setja inn bil í skrár

Með sed getum við líka sett inn bil (eyðar línur) fyrir hverja ótóma línu í skrá. Til að setja inn eina auða línu aðra hverja línu í LICENSE, venjuleg textaskrá, gerðu:

# sed G myfile.txt

Til að setja inn tvær auðar línur skaltu gera:

# sed 'G;G' myfile.txt

Bættu við hástöfum G aðskilið með semíkommu ef þú vilt bæta við fleiri auðum línum. Eftirfarandi mynd sýnir dæmið sem lýst er í þessari ábendingu:

Þessi ábending gæti komið sér vel ef þú vilt skoða stóra stillingarskrá. Að setja inn autt bil í annarri hverri línu og setja úttakið í minna mun leiða til vinalegri lestrarupplifunar.

10. Herma eftir dos2unix með innbyggðri klippingu

Dos2unix forritið breytir venjulegum textaskrám frá Windows/Mac sniði yfir í Unix/Linux og fjarlægir falinn nýlínustafi sem settur er inn af sumum textaritlum sem notaðir eru á þessum kerfum. Ef það er ekki sett upp í Linux kerfinu þínu geturðu líkt eftir virkni þess með sed í stað þess að setja það upp.

Á myndinni til vinstri sjáum við nokkra DOS nýlínustafi (^M), sem síðar voru fjarlægðir með:

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

Vinsamlegast athugaðu að -i valmöguleikinn gefur til kynna að breyting sé á staðnum. Þá verða breytingar ekki skilaðar á skjáinn heldur vistaðar í skránni.

Athugið: Þú getur sett inn DOS nýlínustafi á meðan þú breytir skrá í vim ritlinum með Ctrl+V og Ctrl+M.

11. Breyting á staðnum og afrit af upprunalegu skránni

Í fyrri ábendingunni notuðum við sed til að breyta skrá en vistuðum ekki upprunalegu skrána. Stundum er góð hugmynd að vista öryggisafrit af upprunalegu skránni til öryggis.

Til að gera það skaltu tilgreina viðskeyti á eftir -i valmöguleikanum (inni í stökum gæsalöppum) sem á að nota til að endurnefna upprunalegu skrána.

Í eftirfarandi dæmi munum við skipta út öllum tilfellum af þessu eða þessu (það hunsa stórar tölur) fyrir það í myfile.txt, og við munum vista upprunalegu skrána sem myfile.txt.orig.

Að lokum munum við nota diff gagnsemi til að bera kennsl á muninn á báðum skrám:

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

12. Skipta um pör af orðum

Gerum ráð fyrir að þú sért með skrá sem inniheldur full nöfn á sniðinu Fornafn, Eftirnafn. Til að vinna úr skránni á fullnægjandi hátt gætirðu viljað skipta um Eftirnafn og Fornafn.

Við getum gert það með sed frekar auðveldlega:

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

Á myndinni hér að ofan getum við séð að svigir, sem eru sértákn, þurfa að vera sleppt, eins og tölurnar 1 og 2.

Þessar tölur tákna auðkenndu reglulegu tjáningarnar (sem þurfa að birtast innan sviga):

  1. 1 táknar upphaf hverrar línu upp að kommu.
  2. 2 er staðgengill fyrir allt sem er rétt við kommu við enda línunnar.

Æskileg framleiðsla er tilgreind á sniðinu SecondColumn (Eftirnafn) + komma + bil + FirstColumn (Fornafn). Ekki hika við að breyta því í það sem þú vilt.

13. Að skipta aðeins út orðum ef aðskilin samsvörun finnst

Stundum er það ekki nákvæmlega það sem við þurfum að skipta út öllum tilvikum tiltekins orðs, eða fáein af handahófi. Kannski þurfum við að framkvæma skiptinguna ef aðskilinn samsvörun finnst.

Til dæmis gætum við aðeins viljað skipta út byrjun fyrir stopp ef orðið þjónustur finnast í sömu línu. Í þeirri atburðarás, hér er það sem mun gerast:

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

Í fyrstu línu verður byrjun ekki skipt út fyrir stopp þar sem orðið þjónustur kemur ekki fyrir í þeirri línu, öfugt við seinni línu.

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

14. Framkvæma tvær eða fleiri skiptingar í einu

Þú getur sameinað tvær eða fleiri staðgöngur eina sed skipun. Við skulum skipta út orðinu þessi og línu í myfile.txt fyrir þetta og vers, í sömu röð.

Athugaðu hvernig þetta er hægt að gera með því að nota venjulega sed skiptiskipun fylgt eftir með semíkommu og annarri skiptiskipun:

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

Þessi ábending er sýnd á eftirfarandi mynd:

15. Sameina sed og aðrar skipanir

Auðvitað er hægt að sameina sed með öðrum verkfærum til að búa til öflugri skipanir. Til dæmis, við skulum nota dæmið sem gefið er í RÁÐ #4 og draga IP tölu okkar úr úttakinu á ip leið skipuninni.

Við byrjum á því að prenta aðeins línuna þar sem orðið src er. Síðan munum við breyta mörgum rýmum í eitt. Að lokum munum við klippa 9. reitinn (miðað við eitt bil sem reitaskil), þar sem IP-talan er:

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

Myndin hér að neðan sýnir hvert skref í ofangreindri skipun:

Samantekt

Í þessari handbók höfum við deilt 15 sed ráðum og brellum til að hjálpa þér við dagleg kerfisstjórnunarverkefni. Er einhver önnur ábending sem þú notar reglulega og vilt deila með okkur og öðrum í samfélaginu?

Ef svo er, ekki hika við að láta okkur vita með því að nota athugasemdareyðublaðið hér að neðan. Spurningar og athugasemdir eru einnig vel þegnar - við hlökkum til að heyra frá þér!