Kā lietot awk komandu operētājsistēmā Linux

Fatmawati Achmad Zaenuri/Shutterstock



Operētājsistēmā Linux |_+_| ir komandrindas teksta manipulācijas dinamo, kā arī jaudīga skriptu valoda. Šeit ir ievads dažām tās stilīgākajām funkcijām.

SAISTĪTI: 10 pamata Linux komandas iesācējiem





Cik awk ieguva savu nosaukumu

|_+_| komanda tika nosaukta, izmantojot to trīs cilvēku iniciāļus, kuri uzrakstīja sākotnējo versiju 1977. gadā: Alfrēds Aho , Pēteris Veinbergers , un Braiens Kernigans . Šie trīs vīrieši bija no leģendārās AT&T Bell Laboratories Unix panteons. Ar daudzu citu ieguldījumu kopš tā laika |_+_| ir turpinājusi attīstīties.

Tā ir pilna skriptu valoda, kā arī pilnīgs teksta manipulācijas rīku komplekts komandrindai. Ja šis raksts rosina jūsu apetīti, varat pārbaudiet katru detaļu par |_+_| un tā funkcionalitāte.



Noteikumi, modeļi un darbības

|_+_| darbojas programmās, kurās ir noteikumi, kas sastāv no modeļiem un darbībām. Darbība tiek izpildīta tekstam, kas atbilst paraugam. Raksti ir ietverti krokainās lencēs (|_+_|). Raksts un darbība kopā veido likumu. Viss |_+_| programma ir ievietota atsevišķās pēdiņās (|_+_|).

Apskatīsim vienkāršāko |_+_| veidu programma. Tam nav raksta, tāpēc tas atbilst katrai tajā ievadītā teksta rindiņai. Tas nozīmē, ka darbība tiek izpildīta katrā rindā. Mēs to darīsim izmantojiet to izvadei no |_+_| komandu.

Šeit ir standarta izvade no |_+_|:



awk

Reklāma

Varbūt mums nav vajadzīga visa šī informācija, bet mēs vienkārši vēlamies redzēt vārdus kontos. Mēs varam izvadīt no |_+_| uz |_+_| un pēc tam pasakiet |_+_| lai drukātu tikai pirmo lauku.

Pēc noklusējuma |_+_| uzskata, ka lauks ir rakstzīmju virkne, ko ieskauj atstarpes, rindas sākums vai rindas beigas. Lauki tiek identificēti ar dolāra zīmi (|_+_|) un skaitli. Tātad, |_+_| apzīmē pirmo lauku, ko izmantosim ar |_+_| darbība, lai izdrukātu pirmo lauku.

Mēs ierakstām sekojošo:

awk

|_+_| izdrukā pirmo lauku un atmet pārējo rindiņu.

Mēs varam izdrukāt tik daudz lauku, cik mums patīk. Ja kā atdalītāju pievienojam komatu, |_+_| izdrukā atstarpi starp katru lauku.

Mēs ierakstām šo, lai izdrukātu arī laiku, kad persona ir pieteikusies (ceturtais lauks):

awk

Ir daži īpaši lauka identifikatori. Tie attēlo visu teksta rindiņu un pēdējo lauku teksta rindiņā:

    0 $: attēlo visu teksta rindiņu. 1 $: apzīmē pirmo lauku. 2 $: apzīmē otro lauku. 7 $: apzīmē septīto lauku. 45 $: apzīmē 45. lauku. $NF: apzīmē lauku skaitu un apzīmē pēdējo lauku.
Reklāma

Mēs ierakstīsim tālāk norādīto, lai parādītu nelielu teksta failu, kurā ir ietverts īss citāts Deniss Ričijs :

awk

Mēs vēlamies |_+_| lai izdrukātu citāta pirmo, otro un pēdējo lauku. Ņemiet vērā: lai gan tas ir apvilkts termināļa logā, tā ir tikai viena teksta rindiņa.

Mēs ierakstām šādu komandu:

awk

Mēs nezinām šo vienkāršību. ir 18. lauks teksta rindā, un mums ir vienalga. Mēs zinām, ka tas ir pēdējais lauks, un mēs varam izmantot |_+_| lai iegūtu tās vērtību. Periods tiek uzskatīts par vēl vienu lauka pamatteksta raksturu.

Izvades lauku atdalītāju pievienošana

Varat arī pateikt |_+_| lai starp laukiem drukātu noteiktu rakstzīmi noklusējuma atstarpes rakstzīmes vietā. Noklusējuma izvade no |_+_| komanda ir nedaudz savdabīga jo laiks ir noslīpēts tieši tā vidū. Tomēr mēs varam ierakstīt tālāk norādīto un izmantot |_+_| lai iegūtu vajadzīgos laukus:

{} awk

Mēs izmantosim |_+_| (izejas lauka atdalītājs) mainīgais, lai ievietotu atdalītāju starp mēnesi, dienu un gadu. Ņemiet vērā, ka tālāk komanda ir ievietota atsevišķās pēdiņās (|_+_|), nevis krokainajās iekavās (|_+_|):

' awk

SĀKUMA un BEIGAS noteikumi

A |_+_| noteikums tiek izpildīts vienu reizi pirms teksta apstrādes sākšanas. Faktiski tas ir izpildīts pirms |_+_| pat izlasa jebkuru tekstu. |_+_| noteikums tiek izpildīts pēc visas apstrādes pabeigšanas. Jums var būt vairāki |_+_| un |_+_| noteikumus, un tie tiks izpildīti kārtībā.

Reklāma

Mūsu piemēram |_+_| noteikumu, mēs izdrukāsim visu citātu no |_+_| failu, kuru izmantojām iepriekš, virs tā ir virsraksts.

Lai to izdarītu, mēs ierakstām šo komandu:

who

Ņemiet vērā |_+_| kārtulai ir sava darbību kopa, kas ir iekļauta tās cirtaino iekavas komplektā (|_+_|).

Mēs varam izmantot šo pašu paņēmienu ar komandu, ko izmantojām iepriekš, lai izvadītu no |_+_| uz |_+_|. Lai to izdarītu, mēs ierakstām:

who

Ievades lauku atdalītāji

Ja vēlaties |_+_| lai strādātu ar tekstu, kurā lauku atdalīšanai neizmanto atstarpes, jums ir jānorāda, kura rakstzīme tekstā tiek izmantota kā lauku atdalītājs. Piemēram, |_+_| fails izmanto kolu (|_+_|), lai atdalītu laukus.

Mēs izmantosim šo failu un |_+_| (atdalīšanas virkne) opcija, lai pateiktu |_+_| lai izmantotu kolu (|_+_|) kā atdalītāju. Mēs ierakstām šo, lai pateiktu |_+_| lai izdrukātu lietotāja konta nosaukumu un mājas mapi:

who

Izvade satur lietotāja konta nosaukumu (vai lietojumprogrammas vai dēmona nosaukumu) un mājas mapi (vai lietojumprogrammas atrašanās vietu).

Rakstu pievienošana

Ja mūs interesē tikai parastie lietotāju konti, drukāšanas darbībā varam iekļaut modeli, lai filtrētu visus citus ierakstus. Jo Lietotāja ID skaitļi ir vienādi vai lielāki par 1000, mēs varam balstīt filtru uz šo informāciju.

Reklāma

Mēs ierakstām tālāk norādīto, lai izpildītu drukas darbību tikai tad, ja trešajā laukā (|_+_|) ir vērtība 1000 vai lielāka:

awk

Rakstam ir jābūt tieši pirms darbības, ar kuru tas ir saistīts.

Mēs varam izmantot |_+_| noteikumu, lai mūsu mazajam ziņojumam nodrošinātu nosaukumu. Mēs ierakstām šādu tekstu, izmantojot apzīmējumu (|_+_|), lai nosaukuma virknē ievietotu jaunas rindiņas rakstzīmi:

awk

Raksti ir pilnvērtīgi regulāras izteiksmes , un tie ir viens no |_+_| krāšņumiem.

Pieņemsim, ka mēs vēlamies redzēt uzstādīto failu sistēmu universāli unikālos identifikatorus (UUID). Ja mēs meklējam, izmantojot |_+_| failu virknes UUID gadījumiem, tai ir jāatgriež šī informācija mūsu vietā.

Mēs savā komandā izmantojam meklēšanas modeli /UUID/:

awk

Reklāma

Tas atrod visus UUID gadījumus un izdrukā šīs rindas. Mēs faktiski būtu saņēmuši tādu pašu rezultātu bez |_+_| darbību, jo noklusējuma darbība drukā visu teksta rindiņu. Tomēr skaidrības labad bieži ir lietderīgi izteikties skaidri. Pārskatot skriptu vai vēstures failu, jūs priecāsities, ka atstājāt norādes sev.

Pirmā atrastā rindiņa bija komentāru rindiņa, un, lai gan UUID virkne atrodas tās vidū, |_+_| joprojām atrada. Mēs varam pielāgot regulāro izteiksmi un pateikt |_+_| lai apstrādātu tikai tās rindas, kas sākas ar UUID. Lai to izdarītu, mēs ierakstām šo, kas ietver rindas sākuma marķieri (|_+_|):

$

Tā ir labāk! Tagad mēs redzam tikai oriģinālas montāžas instrukcijas. Lai vēl vairāk precizētu izvadi, mēs ierakstām tālāk norādīto un ierobežojam rādīšanu līdz pirmajam laukam:

Ja šai iekārtai būtu uzstādītas vairākas failu sistēmas, mēs iegūtu glītu to UUID tabulu.

Iebūvētās funkcijas

|_+_| ir daudzas funkcijas, kuras varat izsaukt un izmantot savās programmās , gan no komandrindas, gan skriptos. Ja veicat rakšanas darbus, tas būs ļoti auglīgi.

Lai parādītu vispārīgo funkcijas izsaukšanas paņēmienu, apskatīsim dažus skaitļus. Piemēram, tiek drukāta kvadrātsakne no 625:

printReklāma

Šī komanda izdrukā 0 (nulles) un -1 (kas ir matemātiskā konstante pi) arktangensu:

awk

Nākamajā komandā mēs modificējam |_+_| rezultātu funkcija pirms drukāšanas:

awk

Funkcijas var pieņemt izteiksmes kā parametrus. Piemēram, šeit ir sarežģīts veids, kā lūgt kvadrātsakni no 25:

awk

awk skripti

Ja komandrinda kļūst sarežģīta vai jūs izstrādājat rutīnu, kuru vēlaties izmantot vēlreiz, varat pārsūtīt savu |_+_| komandu skriptā.

Mūsu skripta piemērā mēs veiksim visas šīs darbības:

  • Norādiet apvalkam, kuru izpildāmo failu izmantot skripta palaišanai.
  • Sagatavot |_+_| lai izmantotu |_+_| lauku atdalīšanas mainīgais, lai lasītu ievades tekstu ar laukiem, kas atdalīti ar koliem (|_+_|).
  • Izmantojiet |_+_| izvades lauka atdalītājs, lai pateiktu |_+_| izmantot kolus (|_+_|), lai izvadā atdalītu laukus.
  • Iestatiet skaitītāju uz 0 (nulle).
  • Katras teksta rindiņas otrajā laukā iestatiet tukšu vērtību (tas vienmēr ir x, tāpēc mums tas nav jāredz).
  • Izdrukājiet rindiņu ar modificēto otro lauku.
  • Palieliniet skaitītāju.
  • Izdrukājiet skaitītāja vērtību.

Mūsu skripts ir parādīts zemāk.

Awk skripta piemērs redaktorā.

|_+_| noteikums veic sagatavošanas darbības, savukārt |_+_| noteikums parāda skaitītāja vērtību. Vidējais noteikums (kam nav ne nosaukuma, ne raksta, lai tas atbilstu katrai rindai) maina otro lauku, izdrukā līniju un palielina skaitītāju.

Reklāma

Skripta pirmajā rindiņā ir norādīts apvalks, kuru izpildāmo failu izmantot (mūsu piemērā |_+_|), lai palaistu skriptu. Tas arī iztur |_+_| (faila nosaukums) opcijai |_+_|, kas informē, ka teksts, ko tā gatavojas apstrādāt, nāks no faila. Mēs nosūtīsim faila nosaukumu skriptam, kad to palaižam.

Mēs esam iekļāvuši zemāk esošo skriptu kā tekstu, lai jūs varētu izgriezt un ielīmēt:

$NF

Saglabājiet to failā ar nosaukumu |_+_|. Uz padarīt skriptu izpildāmu Un , mēs ierakstām šo, izmantojot |_+_|:

awk

Tagad mēs to izpildīsim un nokārtosim |_+_| failu skriptam. Šis ir fails |_+_| apstrādās mūsu vietā, izmantojot skripta noteikumus:

date

Fails tiek apstrādāts un tiek parādīta katra rinda, kā parādīts zemāk.

Reklāma

X ieraksti otrajā laukā tika noņemti, taču ņemiet vērā, ka lauku atdalītāji joprojām ir pieejami. Rindas tiek skaitītas, un kopsumma ir norādīta izvades apakšā.

awk Neattiecas uz Awkward

|_+_| neapzīmē neērts; tas apzīmē eleganci. Tas ir aprakstīts kā apstrādes filtrs un atskaišu rakstītājs. Precīzāk sakot, tie ir abi šie vai, drīzāk, rīks, ko varat izmantot abiem šiem uzdevumiem. Tikai dažās rindās |_+_| panāk to, kas prasa plašu kodēšanu tradicionālā valodā.

Šo spēku izmanto vienkārša noteikumu koncepcija, kas satur modeļus, atlasa apstrādājamo tekstu un darbības, kas nosaka apstrādi.

Linux komandas
Faili darva · pv · kaķis · tac · chmod · saķere · atšķir · sed · ar · vīrietis · stumts · popd · fsck · testa disks · sek · fd · pandoc · CD · $PATH · awk · pievienoties · jq · salocīt · unik · Journalctl · asti · Valsts · ls · fstab · izmest ārā · mazāk · chgrp · čown · rev · Skaties · stīgas · veids · pārdēvēt · rāvējslēdzējs · izņemiet rāvējslēdzēju · mount · umount · uzstādīt · fdisk · mkfs · rm · rmdir · rsync · df · gpg · mēs · nano · mkdir · no · ln · ielāps · konvertēt · rclone · sasmalcināt · SRM
Procesi aizstājvārds · ekrāns · tops · jauki · Renice · progresu · strace · sistēma · tmux · chsh · vēsture · plkst · partija · bezmaksas · kuras · dmesg · usermod · ps · chroot · xargs · tty · sārti · lsof · vmstat · pārtraukums · siena · · nogalināt · Gulēt · sudo · viņa · laiks · pievienot grupu · usermod · grupas · lshw · izslēgt · pārstartēt · stop · izslēgt · passwd · lscpu · crontab · datums · bg · fg
Tīklošana netstat · ping · traceroute · ip · ss · kurš ir · fail2ban · bmon · tu · pirksts · nmap · ftp · čokurošanās · wget · PVO · kas es esmu · In · iptables · ssh-keygen · ufw

SAISTĪTI: Labākie Linux klēpjdatori izstrādātājiem un entuziastiem

LASĪT TĀLĀK Deiva Makeja profila fotogrāfija Deivs Makejs
Deivs Makejs pirmo reizi izmantoja datorus, kad modē bija perforētā papīra lente, un kopš tā laika viņš nodarbojas ar programmēšanu. Pēc vairāk nekā 30 IT nozarē nostrādātiem gadiem viņš tagad ir pilnas slodzes tehnoloģiju žurnālists. Savas karjeras laikā viņš ir strādājis par ārštata programmētāju, starptautiskas programmatūras izstrādes komandas vadītāju, IT pakalpojumu projektu vadītāju un pēdējā laikā par datu aizsardzības speciālistu. Viņa raksti ir publicēti vietnē howtogeek.com, cloudsavvyit.com, itenterpriser.com un opensource.com. Deivs ir Linux evaņģēlists un atvērtā koda aizstāvis.
Lasīt pilnu biogrāfiju

Interesanti Raksti