LFCS: Kā izmantot GNU sed komandu, lai izveidotu, rediģētu un manipulētu ar failiem Linux - 1. daļa


Linux fonds paziņoja par LFCS (Linux Foundation Certified Sysadmin) sertifikātu - jaunu programmu, kuras mērķis ir palīdzēt indivīdiem visā pasaulē iegūt sertificētus pamata un vidēja līmeņa sistēmas administrēšanas uzdevumus Linux sistēmām. Tas ietver darbības sistēmu un pakalpojumu atbalstīšanu, kā arī tiešu traucējummeklēšanu un analīzi, kā arī gudru lēmumu pieņemšanu, lai problēmas izvērstu inženieru komandās.

Lūdzu, noskatieties šo video, kas demonstrē Linux Foundation sertifikācijas programmu.

Sērijas nosaukums būs Sagatavošanās LFCS (Linux Foundation Certified Sysadmin) 1. – 10. Daļai, un tā aptvers šādas Ubuntu, CentOS un openSUSE tēmas:

Šis ieraksts ir 20 apmācību sērijas 1. daļa, kas aptvers nepieciešamās jomas un kompetences, kas nepieciešamas LFCS sertifikācijas eksāmenam. Sakot, ieslēdziet termināli un sāksim.

Teksta straumju apstrāde Linux

Linux ieeju programmās un izvadi no tām uzskata par rakstzīmju straumēm (vai sekvencēm). Lai sāktu izpratni par novirzīšanu un caurulēm, mums vispirms ir jāsaprot trīs vissvarīgākie I/O (ievades un izvades) plūsmu veidi, kas faktiski ir īpaši faili (pēc vienošanās UNIX un Linux, datu plūsmas un perifērijas ierīces vai ierīces faili). tiek uzskatīti arī par parastiem failiem).

Atšķirība starp > (novirzīšanas operators) un | (cauruļvada operators) ir tāda, ka, kamēr pirmais savieno komandu ar failu, pēdējais savieno komandas izvadi ar citu komandu.

# command > file
# command1 | command2

Tā kā novirzīšanas operators izveido vai pārraksta failus klusi, mums tas jālieto ļoti piesardzīgi un nekad nedrīkstam kļūdīties ar cauruļvadu. Viena cauruļu priekšrocība Linux un UNIX sistēmās ir tā, ka ar cauruli nav saistīts starpposma fails - pirmās komandas statuss netiek ierakstīts failā, un pēc tam to nolasa otrā komanda.

Turpmākajiem vingrinājumiem izmantosim dzejoli “ Laimīgs bērns ” (anonīms autors).

Straumes redaktoram ir saīsinājums sed . Tiem, kas šo terminu nepārzina, straumes redaktoru izmanto, lai ievades straumē (failā vai ievadā no cauruļvada) veiktu pamata teksta pārveidojumus.

Pamata (un populārākā) sed lietošana ir rakstzīmju aizstāšana. Sāksim, mainot katru mazo burtu y uz UPPERCASE Y un novirzot izvadi uz ahappychild2.txt . Karogs g norāda, ka sed katrā faila rindā ir jāaizstāj visi termina gadījumi. Ja šis karodziņš tiek izlaists, sed aizstās tikai pirmo termina parādīšanos katrā rindā.

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

Ja vēlaties meklēt vai aizstāt kādu īpašu rakstzīmi (piemēram, /, \, & ), jums no tā jāizvairās vai aizstājošās virknes ar slīpsvītru atpakaļ.

Piemēram, mēs aizstāsim vārdu un zīmi. Tajā pašā laikā mēs aizstāsim vārdu I ar Jūs , kad pirmais tiks atrasts rindas sākumā.

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

Iepriekšminētajā komandā ^ (caret sign) ir labi pazīstama regulārā izteiksme, ko izmanto rindas sākuma apzīmēšanai.

Kā redzat, mēs varam apvienot divas vai vairākas aizstāšanas komandas (un to iekšpusē izmantot regulāras izteiksmes), atdalot tās ar semikolu un ieliekot kopu atsevišķās pēdiņās.

Cits sed izmantojums ir izvēlētās faila daļas parādīšana (vai dzēšana). Šajā piemērā mēs parādīsim pirmās 5 /var/log/messages rindas no 8. jūnija.

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

Ņemiet vērā, ka pēc noklusējuma sed izdrukā katru līniju. Mēs varam ignorēt šo darbību ar opciju -n un pēc tam pateikt sedam drukāt (apzīmēts ar p ) tikai to faila daļu (vai cauruli), kas atbilst paraugam (Pirmajā gadījumā 8. jūnijs rindas sākumā un otrajā gadījumā no 1. līdz 5. līnijai ieskaitot).

Visbeidzot, pārbaudot skriptus vai konfigurācijas failus, var būt noderīgi pārbaudīt pašu kodu un atstāt komentārus. Ar šādu vienas līnijas līniju tiek dzēstas ( d ) tukšas rindas vai tās, kas sākas ar # (rakstzīme | norāda Būla VAI starp diviem parastajiem izteicieni).

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

Komanda uniq ļauj mums ziņot vai noņemt faila rindu dublikātus, pēc noklusējuma rakstot stdout. Jāatzīmē, ka uniq neatklāj atkārtotas līnijas, ja vien tās nav blakus. Tādējādi uniq parasti tiek izmantots kopā ar iepriekšējo kārtošanu (ko izmanto teksta failu rindu kārtošanai). Pēc noklusējuma kārtot pirmais lauks (atdalīts ar atstarpēm) tiek izmantots kā atslēgas lauks. Lai norādītu citu atslēgas lauku, mums jāizmanto opcija -k .

Komanda du –sch/path/to/directory/* atgriež diska vietas lietojumu katram apakšdirektorijam un failiem norādītajā direktorijā cilvēkiem lasāmā formātā (parāda arī direktoriju kopsummu) un neparāda kārtojiet izvadi pēc lieluma, bet pēc apakšdirektorija un faila nosaukuma. Mēs varam izmantot šādu komandu, lai kārtotu pēc lieluma.

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

Jūs varat uzskaitīt notikumu skaitu žurnālā pēc datuma, sakot uniq , lai veiktu salīdzināšanu, izmantojot katras rindas pirmās 6 rakstzīmes (-w 6) (kur datums ir norādīts) un pievienojot katrai prefiksu. izvades rinda pēc gadījumu skaita ( -c ) ar šādu komandu.

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

Visbeidzot, jūs varat apvienot kārtot un uniq (kā parasti). Apsveriet šo failu ar ziedotāju sarakstu, ziedošanas datumu un summu. Pieņemsim, ka mēs vēlamies uzzināt, cik daudz ir unikālu ziedotāju. Mēs izmantosim šādu komandu, lai izgrieztu pirmo lauku (laukus atdala kols), kārtotu pēc nosaukuma un noņemtu rindu dublikātus.

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

Lasīt arī : 13 komandu piemēri “kaķis”

grep meklē teksta failos vai (komandu izvadē), lai parādītu regulāru izteiksmi, un izvada jebkuru rindu, kurā ir atbilstība standarta izejai.

Parādiet lietotāja gacanepa informāciju no /etc/passwd , ignorējot reģistru.

# grep -i gacanepa /etc/passwd

Parādiet visu /etc saturu, kura nosaukums sākas ar rc , kam seko jebkurš atsevišķs skaitlis.

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

Lasīt arī : 12 komandu piemēri “grep”

Ar komandu tr var tulkot (mainīt) vai izdzēst rakstzīmes no stdin un ierakstīt rezultātu stdout.

Mainiet visus mazos burtus uz lielajiem failā sortuniq.txt.

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

Saspiediet norobežotāju ls –l izvadā tikai vienā atstarpē.

# ls -l | tr -s ' '

Komanda izgriezt izvelk ievades rindu daļas (no stdin vai failiem) un parāda rezultātu standarta izvadā, pamatojoties uz baitu skaitu (opcija -b ), rakstzīmēm (< b> -c ) vai lauki ( -f ). Šajā pēdējā gadījumā (pamatojoties uz laukiem) noklusējuma lauku atdalītājs ir cilne, taču, izmantojot opciju -d , var norādīt citu atdalītāju.

Izvelciet lietotāju kontus un tiem piešķirtās noklusējuma čaulas no /etc/passwd (opcija –d ļauj mums norādīt lauka atdalītāju un –f slēdzis norāda, kurš (-ie) lauks (-i) tiks izvilkts (-i).

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

Apkopojot, mēs izveidosim teksta straumi, kas sastāv no komandas pēdējās izejas pirmā un trešā bez tukšā faila. Mēs izmantosim grep kā pirmo filtru, lai pārbaudītu lietotāja gacanepa sesijas, pēc tam saspiest atdalītājus tikai vienā vietā ( tr -s '' ). Pēc tam mēs izvilksim pirmo un trešo lauku ar izgriezt un visbeidzot kārtosim pēc otrā lauka (šajā gadījumā IP adreses), kas parāda unikālu.

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

Iepriekš minētā komanda parāda, kā vairākas komandas un caurules var apvienot, lai iegūtu filtrētus datus atbilstoši mūsu vēlmēm. Varat arī palaist to pa daļām, lai palīdzētu jums redzēt izvadi, kas tiek virzīts no vienas komandas uz otru (starp citu, tā var būt lieliska mācību pieredze!).

Kopsavilkums

Lai gan šis piemērs (kopā ar pārējiem pašreizējās apmācības piemēriem) no pirmā acu uzmetiena var šķist ne pārāk noderīgs, tas ir jauks sākumpunkts, lai sāktu eksperimentēt ar komandām, kuras tiek izmantotas, lai izveidotu, rediģētu un manipulētu ar failiem no Linux komandrinda. Jūtieties brīvi atstāt savus jautājumus un komentārus zemāk - tie tiks ļoti novērtēti!

  1. Par LFCS
  2. Kāpēc iegūt Linux Foundation sertifikātu?
  3. Reģistrējieties LFCS eksāmenam