15 Suġġerimenti u Tricks Utli tal-Kmand Sed għal Ħidmiet ta 'Kuljum ta' Amministrazzjoni tas-Sistema Linux


Kull amministratur tas-sistema jrid jittratta fajls b'test sempliċi kuljum. Li tkun taf kif tara ċerti sezzjonijiet, kif tissostitwixxi l-kliem, u kif tiffiltra l-kontenut minn dawk il-fajls huma ħiliet li jeħtieġ li jkollok fil-idejn mingħajr ma jkollok bżonn tagħmel tfittxija fuq Google.

F'dan l-artikolu se nirrevedu sed, l-editur tal-flussi magħruf, u naqsmu 15-il pariri biex tużah sabiex nilħqu l-għanijiet imsemmija qabel, u aktar.

1. Ara firxa ta' linji ta' dokument

Għodod bħal ras u denb jippermettulna naraw il-qiegħ jew il-quċċata ta 'fajl. X'jiġri jekk irridu naraw sezzjoni fin-nofs? Is-sed one-liner li ġej se jirritorna l-linji 5 sa 10 minn myfile.txt:

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

2. Ara l-fajl kollu ħlief firxa partikolari

Min-naħa l-oħra, huwa possibbli li trid tipprintja l-fajl kollu ħlief ċertu firxa. Biex teskludi l-linji 20 sa 35 minn myfile.txt, agħmel:

# sed '20,35d' myfile.txt

3. Viewing linji u firxiet mhux konsekuttivi

Huwa possibbli li inti interessat f'sett ta 'linji mhux konsekuttivi, jew f'aktar minn firxa waħda. Ejja nuru l-linji 5-7 u 10-13 minn myfile.txt:

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

Kif tistgħu taraw, l-għażla -e tippermettilna nwettqu azzjoni partikolari (f'dan il-każ, tipprintja linji) għal kull firxa.

4. Tissostitwixxi kliem jew karattri (sostituzzjoni bażika)

Biex tissostitwixxi kull istanza tal-kelma verżjoni bi story f'myfile.txt, agħmel:

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

Barra minn hekk, tista' tkun trid tikkunsidra li tuża gi minflok g sabiex tinjora l-każ tal-karattri:

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

Biex nissostitwixxu spazji vojta multipli bi spazju wieħed, se nużaw l-output ta 'ip route show u pipeline:

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

Qabbel l-output ta' ip route show bi u mingħajr il-pipeline:

5. Tissostitwixxi kliem jew karattri ġewwa firxa

Jekk int interessat li tissostitwixxi kliem biss f'medda ta' linji (30 sa 40, pereżempju), tista' tagħmel:

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

Naturalment, tista 'tindika linja waħda permezz tan-numru korrispondenti tagħha minflok firxa.

6. L-użu ta’ espressjonijiet regolari (sostituzzjoni avvanzata) – I

Xi drabi l-fajls tal-konfigurazzjoni huma mgħobbija b'kummenti. Filwaqt li dan huwa ċertament utli, jista 'jkun utli li turi biss id-direttivi tal-konfigurazzjoni kultant jekk trid tarahom kollha f'daqqa t'għajn.

Biex tneħħi linji vojta jew dawk li jibdew b'# mill-fajl tal-konfigurazzjoni Apache, agħmel:

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

Is-sinjal caret segwit mis-sinjal tan-numru (^#) jindika l-bidu ta' linja, filwaqt li ^$ jirrappreżenta linji vojta. Il-vireg vertikali jindikaw operazzjonijiet boolean, filwaqt li l-linja mmejla b'lura tintuża biex taħrab il-vireg vertikali.

F'dan il-każ partikolari, il-fajl tal-konfigurazzjoni Apache għandu linji b'#'s mhux fil-bidu ta 'xi linji, għalhekk *# jintuża biex jitneħħew dawk ukoll.

7. L-użu ta' espressjonijiet regolari (sostituzzjoni avvanzata) – II

Biex nissostitwixxu kelma li tibda b'ittri kbar jew żgħar b'kelma oħra, nistgħu nużaw ukoll sed. Biex nagħtu eżempju, ejja nibdel il-kelma zip jew Zip b'rar f'myfile.txt:

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

8. Viewing linji li fihom b'mudell partikolari

Użu ieħor ta' sed jikkonsisti fl-istampar tal-linji minn fajl li jaqblu ma' espressjoni regolari partikolari. Pereżempju, nistgħu nkunu interessati li naraw l-attivitajiet ta 'awtorizzazzjoni u awtentikazzjoni li seħħew fit-2 ta' Lulju, skont il-/var/log/secure log f'server CentOS 7.

F'dan il-każ, il-mudell li trid tfittex huwa 2 ta 'Lulju fil-bidu ta' kull linja:

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

9. Daħħal spazji fil-fajls

B'sed, nistgħu wkoll daħħal spazji (linji vojta) għal kull linja mhux vojta f'fajl. Biex daħħal linja vojta waħda kull linja oħra f'LIĊENZJA, fajl b'test sempliċi, agħmel:

# sed G myfile.txt

Biex daħħal żewġ linji vojta, agħmel:

# sed 'G;G' myfile.txt

Żid G b'ittri kbar separati minn punt u virgola jekk trid iżżid aktar linji vojta. L-immaġni li ġejja turi l-eżempju deskritt f'din il-ponta:

Din il-ponta tista’ tkun utli jekk trid tispezzjona fajl kbir ta’ konfigurazzjoni. Daħħal spazju vojt kull linja oħra u pajpijiet tal-output għal inqas se jirriżulta f'esperjenza ta 'qari aktar faċli.

10. Emulazzjoni ta 'dos2unix b'editjar inline

Il-programm dos2unix jikkonverti fajls ta 'test sempliċi mill-ifformattjar tal-Windows/Mac għal Unix/Linux, u jneħħi karattri newline moħbija mdaħħla minn xi edituri tat-test użati f'dawk il-pjattaformi. Jekk ma tkunx installata fis-sistema Linux tiegħek, tista' timita l-funzjonalità tagħha b'sed minflok ma tinstallah.

Fl-immaġni fuq ix-xellug nistgħu naraw diversi karattri DOS newline (^M), li aktar tard tneħħew bi:

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

Jekk jogħġbok innota li l-għażla -i tindika editjar fil-post. Imbagħad il-bidliet mhux se jintbagħtu lura lill-iskrin, iżda jiġu ssejvjati fil-fajl.

Nota: Tista' ddaħħal karattri ta' linja ġdida DOS waqt li teditja fajl fl-editur vim b'Ctrl+V u Ctrl+M.

11. Editjar fil-post u backup tal-fajl oriġinali

Fil-ponta preċedenti użajna sed biex timmodifika fajl iżda ma ssejvjax il-fajl oriġinali. Xi drabi tkun idea tajba li tissejvja kopja ta’ backup tal-fajl oriġinali fil-każ.

Biex tagħmel dan, indika suffiss wara l-għażla -i (ġewwa kwotazzjonijiet singoli) li għandha tintuża biex tibdel l-isem tal-fajl oriġinali.

Fl-eżempju li ġej aħna se nissostitwixxu l-istanzi kollha ta 'dan jew Dan (jinjora l-każ) ma' dak f'myfile.txt, u aħna se nsalvaw il-fajl oriġinali bħala myfile.txt.orig.

Fl-aħħarnett, se nużaw l-utilità diff biex nidentifikaw id-differenzi bejn iż-żewġ fajls:

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

12. Qlib ta’ pari ta’ kliem

Ejja ngħidu li għandek fajl li fih ismijiet sħaħ fil-format Isem, Kunjom. Biex tipproċessa l-fajl b'mod adegwat, tista' tkun trid taqleb Kunjom u Isem.

Nistgħu nagħmlu dan b'sed pjuttost faċilment:

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

Fl-immaġni ta 'hawn fuq nistgħu naraw li l-parentesi, peress li huma karattri speċjali, jeħtieġ li jinħarbu, kif jagħmlu n-numri 1 u 2.

Dawn in-numri jirrappreżentaw l-espressjonijiet regolari enfasizzati (li jeħtieġ li jidhru fil-parentesi):

  1. 1 jirrappreżenta l-bidu ta' kull linja sal-virgola.
  2. 2 huwa placeholder għal dak kollu li huwa dritt tal-virgola sa l-aħħar tal-linja.

L-output mixtieq huwa indikat fil-format SecondColumn (Lastname) + virgola + spazju + FirstColumn (Firname). Ħossok liberu li tibdelha għal dak li tixtieq.

13. Tibdel il-kliem biss jekk tinstab taqbila separata

Xi drabi li tissostitwixxi l-istanzi kollha ta 'kelma partikolari, jew ftit każwali, mhuwiex preċiżament dak li għandna bżonn. Forsi għandna bżonn inwettqu s-sostituzzjoni jekk tinstab taqbila separata.

Pereżempju, nistgħu nixtiequ nissostitwixxu start with stop biss jekk il-kelma servizzi tinstab fl-istess linja. F'dak ix-xenarju, hawn x'se jiġri:

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

Fl-ewwel linja, start mhux se jiġi sostitwit b'waqfien peress li l-kelma servizzi ma tidhirx f'dik il-linja, għall-kuntrarju tat-tieni linja.

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

14. It-twettiq ta' żewġ sostituzzjonijiet jew aktar f'daqqa

Tista 'tgħaqqad żewġ sostituzzjonijiet jew aktar kmand wieħed sed. Ejja nissostitwixxu l-kliem li u l-linja f'myfile.txt b'Dan u poeżiji, rispettivament.

Innota kif dan jista' jsir billi tuża kmand ta' sostituzzjoni sed ordinarju segwit minn punt u virgola u t-tieni kmand ta' sostituzzjoni:

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

Din il-ponta hija illustrata fl-immaġni li ġejja:

15. Tgħaqqad sed u kmandi oħra

Naturalment, sed jista 'jiġi kkombinat ma' għodod oħra sabiex jinħolqu kmandi aktar qawwija. Pereżempju, ejja nużaw l-eżempju mogħti fit-TIP #4 u estratt l-indirizz IP tagħna mill-output tal-kmand ip route.

Nibdew billi nistampaw biss il-linja fejn hemm il-kelma src. Imbagħad aħna se nikkonvertu spazji multipli f'wieħed wieħed. Fl-aħħarnett, se naqtgħu d-9 qasam (meta nqisu spazju wieħed bħala separatur tal-kamp), li huwa fejn jinsab l-indirizz IP:

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

L-immaġni hawn taħt turi kull pass tal-kmand ta 'hawn fuq:

Sommarju

F'din il-gwida qsamna 15-il suġġeriment u tricks sed biex jgħinuk fil-kompiti ta 'kuljum ta' amministrazzjoni tas-sistema tiegħek. Hemm xi tip ieħor li tuża fuq bażi regolari u li tixtieq taqsam magħna u mal-bqija tal-komunità?

Jekk iva, tħossok liberu li tgħarrafna billi tuża l-formola tal-kummenti hawn taħt. Mistoqsijiet u kummenti huma milqugħa wkoll - nistennew bil-ħerqa li nisimgħu mingħandek!