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 apzīmē katras rindas sākumu līdz komatam.
- 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!