15 noderīgi komandu padomi un ieteikumi ikdienas Linux sistēmas administrēšanas uzdevumiem


Katram sistēmas administratoram ikdienā jātiek galā ar vienkārša teksta failiem. Zināšanas par to, kā apskatīt noteiktas sadaļas, kā aizstāt vārdus un kā filtrēt saturu no šiem failiem, ir prasmes, kas jums jāpalīdz bez Google meklēšanas.

Šajā rakstā mēs pārskatīsim sed, labi pazīstamo straumes redaktoru, un dalīsimies ar 15 padomiem, kā to izmantot, lai sasniegtu iepriekš minētos mērķus, un vēl vairāk.

1. Dokumenta rindu diapazona apskate

Tādi rīki kā galva un aste ļauj mums apskatīt faila apakšdaļu vai augšdaļu. Ko darīt, ja mums ir jāaplūko sadaļa vidū? Šis sed-one-līnijpārvadātājs atgriezīs līnijas 5 līdz 10 no myfile.txt:

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

2. Visa faila apskate, izņemot noteiktu diapazonu

No otras puses, iespējams, ka vēlaties izdrukāt visu failu, izņemot noteiktu diapazonu. Lai no myfile.txt izslēgtu 20. – 35. Rindiņu, rīkojieties šādi:

# sed '20,35d' myfile.txt

3. Nesekojošu līniju un diapazonu apskate

Iespējams, ka jūs interesē secīgu rindu kopa vai vairāki diapazoni. Parādīsim 5. – 7. Un 10. – 13. Rindiņu no myfile.txt:

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

Kā redzat, opcija -e ļauj mums izpildīt noteiktu darbību (šajā gadījumā drukāt līnijas) katram diapazonam.

4. Vārdu vai rakstzīmju aizstāšana (pamata aizstāšana)

Lai aizstātu visus vārda version gadījumus ar story mapē myfile.txt, rīkojieties šādi:

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

Lai ignorētu rakstzīmju reģistru, ieteicams apsvērt iespēju izmantot gi , nevis g :

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

Lai aizstātu vairākas tukšas vietas ar vienu atstarpi, mēs izmantosim ip route show izvadi un cauruļvadu:

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

Salīdziniet ip route show izvadi ar cauruļvadu un bez tā:

5. Vārdu vai rakstzīmju aizstāšana diapazonā

Ja jūs interesē vārdu aizstāšana tikai līnijas diapazonā (piemēram, no 30 līdz 40), varat rīkoties šādi:

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

Protams, diapazona vietā jūs varat norādīt vienu līniju ar atbilstošo numuru.

6. Regulāru izteicienu izmantošana (uzlabota aizstāšana) - I

Dažreiz konfigurācijas failos tiek ielādēti komentāri. Lai gan tas noteikti ir noderīgi, var būt noderīgi dažreiz parādīt tikai konfigurācijas direktīvas, ja vēlaties tās visas apskatīt īsumā.

Lai no Apache konfigurācijas faila noņemtu tukšas rindas vai tās, kas sākas ar # , rīkojieties šādi:

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

Pielikuma zīme, kurai seko cipara zīme (^#) , norāda rindas sākumu, savukārt ^$ apzīmē tukšas rindas. Vertikālās joslas norāda būla darbības, savukārt slīpsvītru atpakaļ izmanto, lai izvairītos no vertikālajām joslām.

Šajā konkrētajā gadījumā Apache konfigurācijas failā ir rindas ar # ’s , nevis dažu rindu sākumā, tāpēc * # tiek izmantots arī to noņemšanai.

7. Regulāru izteicienu izmantošana (uzlabota aizstāšana) - II

Lai vārdu, kas sākas ar lielajiem vai mazajiem burtiem, aizstātu ar citu vārdu, mēs varam izmantot arī sed. Lai ilustrētu, aizstāsim vārdu zip vai Zip ar rar failā myfile.txt:

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

8. Apskatot līnijas, kas satur noteiktu modeli

Vēl viens sed lietošanas veids ir līniju drukāšana no faila, kas atbilst noteiktai regulārajai izteiksmei. Piemēram, mēs varam būt ieinteresēti apskatīt autorizācijas un autentifikācijas darbības, kas notika 2. jūlijā, kā norādīts/var/log/secure žurnālā CentOS 7 serverī.

Šajā gadījumā meklējamais modelis ir 2. jūlijs katras rindas sākumā:

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

9. Vietu ievietošana failos

Izmantojot sed, mēs failā varam ievietot arī atstarpes (tukšas rindas) katrai tukšajai rindai. Lai LICENSE, vienkārša teksta failā, ievietotu vienu tukšu rindu katrā otrajā rindiņā, rīkojieties šādi:

# sed G myfile.txt

Lai ievietotu divas tukšas rindas, rīkojieties šādi:

# sed 'G;G' myfile.txt

Pievienojiet lielo burtu G, kas atdalīts ar semikolu, ja vēlaties pievienot vairāk tukšu līniju. Šis attēls ilustrē šajā padomā izklāstīto piemēru:

Šis padoms var būt noderīgs, ja vēlaties pārbaudīt lielu konfigurācijas failu. Ievietojot tukšu vietu katrā otrajā rindiņā un izvadot cauruļvadus uz mazāku, tiks nodrošināta draudzīgāka lasīšanas pieredze.

10. Dos2unix atdarināšana ar rediģēšanu

Programma dos2unix konvertē vienkārša teksta failus no Windows/Mac formatēšanas uz Unix/Linux, noņemot slēptās jaunās līnijas rakstzīmes, ko ievietojuši daži šajās platformās izmantotie teksta redaktori. Ja tas nav instalēts jūsu Linux sistēmā, tā funkcionalitāti varat atdarināt ar sed, nevis instalēt.

Attēlā pa kreisi mēs varam redzēt vairākas DOS jaunās līnijas rakstzīmes (^M) , kuras vēlāk tika noņemtas ar:

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

Lūdzu, ņemiet vērā, ka opcija -i norāda rediģēšanu uz vietas. Pēc tam izmaiņas netiks atgrieztas ekrānā, bet tiks saglabātas failā.

Piezīme: Rediģējot failu vim redaktorā, izmantojot Ctrl + V un Ctrl + M , varat ievietot DOS jaunās līnijas rakstzīmes.

11. Vietējā rediģēšana un oriģinālā faila dublēšana

Iepriekšējā padomē faila modificēšanai izmantojām sed, bet sākotnējo failu nesaglabājām. Dažreiz ir ieteicams katram gadījumam saglabāt oriģināla faila dublējumkopiju.

Lai to izdarītu, norādiet sufiksu, kas seko opcijai -i (atsevišķu pēdiņu iekšpusē), kas jāizmanto sākotnējā faila pārdēvēšanai.

Šajā piemērā mēs aizstāsim visus šī vai šī gadījuma gadījumus (ignorējot gadījumu) ar failu myfile.txt un sākotnējo failu saglabāsim kā myfile.txt.orig.

Visbeidzot, mēs izmantosim diff lietderību, lai identificētu atšķirības starp abiem failiem:

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

12. Vārdu pāru pārslēgšana

Pieņemsim, ka jums ir fails, kurā ir pilni vārdi formātā Vārds, Uzvārds. Lai adekvāti apstrādātu failu, ieteicams nomainīt uzvārdu un vārdu.

Mēs to varam paveikt ar sed diezgan viegli:

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

Augšējā attēlā mēs varam redzēt, ka iekavas, kas ir īpašas rakstzīmes, ir jāsvītro, tāpat kā skaitļi 1 un 2.

Šie skaitļi apzīmē izceltos regulāros izteicienus (kuriem jāparādās iekavās):

  1. 1 apzīmē katras rindas sākumu līdz komatam.
  2. 2 ir vietturis visam, kas atrodas pa labi no komata līdz rindas beigām.

Vēlamā izeja ir norādīta formātā SecondColumn (Uzvārds) + komats + atstarpe + FirstColumn (Vārds). Jūtieties brīvi mainīt to uz visu, ko vēlaties.

13. Vārdu aizstāšana tikai tad, ja tiek atrasta atsevišķa atbilstība

Dažreiz visu konkrētā vārda vai dažu nejaušo gadījumu nomaiņa nav precīzi vajadzīga. Varbūt mums jāveic nomaiņa, ja tiek atrasta atsevišķa spēle.

Piemēram, mēs varam vēlēties aizstāt sākumu ar stop tikai tad, ja vārds services atrodams tajā pašā rindā. Šajā scenārijā notiks šādi:

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

Pirmajā rindā sākums netiks aizstāts ar pieturu, jo šajā rindā atšķirībā no otrās rindas neparādās vārds pakalpojumi.

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

14. Veicot divas vai vairākas aizstāšanas vienlaikus

Jūs varat apvienot divus vai vairākus aizstājējus vienā komandā sed. Aizstāsim vārdus myfile.txt attiecīgi ar šo un dzejoli.

Ievērojiet, kā to var izdarīt, izmantojot parasto sed aizstāšanas komandu, kam seko semikols un otrā aizstāšanas komanda:

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

Šis padoms ir ilustrēts šajā attēlā:

15. Sed un citu komandu apvienošana

Protams, lai izveidotu jaudīgākas komandas, sed var kombinēt ar citiem rīkiem. Piemēram, izmantosim TIP # 4 sniegto piemēru un iegūstiet mūsu IP adresi no komandas ip route izejas.

Sākumā mēs drukāsim tikai to līniju, kurā atrodas vārds src . Tad mēs pārveidosim vairākas atstarpes vienā. Visbeidzot, mēs sagriezsim 9. lauku (ņemot vērā vienu atstarpi kā lauka atdalītāju), kur atrodas IP adrese:

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

Zemāk redzamais attēls ilustrē katru iepriekš minētās komandas darbību:

Kopsavilkums

Šajā ceļvedī mēs esam dalījušies ar 15 padomiem un ieteikumiem, kas palīdzēs jums veikt ikdienas sistēmas administrēšanas uzdevumus. Vai ir kāds cits padoms, kuru jūs regulāri lietojat un kuru vēlaties dalīties ar mums un pārējo sabiedrību?

Ja tā, sazinieties ar mums, izmantojot zemāk esošo komentāru veidlapu. Arī jautājumi un komentāri ir laipni gaidīti - mēs ar prieku gaidīsim jūsu viedokli!