Datorsistēmas vienmēr ir izmantotas, lai analizētu vērtīgus datus, kas saglabāti vienkāršos teksta failos. Savukārt pašas datorsistēmas tiek pārvaldītas, izmantojot žurnālfailus. Šajās divās situācijās potenciāli ir kopīgi tas, ka tajās ir liels datu daudzums, kas pirms datu reālas lasīšanas bieži vien ir jāvienkāršo; pretējā gadījumā tas ir tikai mulsinoši.
Piemēram, ja jūs lasāt dažus datus, kas sakārtoti tabulas formā, vēlaties dažas kolonnas, citas nevēlaties.
Šī prasība bija briesmīga pat dienas laikā, un līdz ar to GNU projektā ir pārsteidzošs rīks, kas lietotājiem palīdz filtrēt un iegūt datus, lai iegūtu labāku pieredzi. Šis rīks ir AWK.
Vēsture
AWK faktiski ir programmēšanas valoda, kas ir veltīta teksta apstrādei. To izmanto datu iegūšanai īpašos modeļos. Septiņdesmitajos gados to izstrādāja Bell Labs, Alfred Aho, Peter Weinberger un Brian Kernighan (viņu uzvārdu iniciāļi deva vārdu). Ar to awk attīstība neapstājās. 1985. gadā tika ieviesta jauna versija, kas awk komandā ieviesa jaunas izmaiņas, tostarp iespēju apstrādāt vairākas ievades straumes, aprēķinātas regulāras izteiksmes, lietotāja definētas funkcijas un daudz ko citu! Īsāk sakot, atjauninājums padarīja to par jaudīgāku programmēšanas valodu.
Awk ir atšķirīga ieviešana. Lai nodrošinātu pareizu ieviešanu, kas piedāvā standarta pieeju, Pols Rubins 1986. gadā rakstīja gawk. Tas labi strādāja ar jaunāko awk.
Bez tam 1989. gada System V laidienā tika pievienotas jaunas funkcijas. Izstrādātāji arī uzlaboja tā tumšos stūrus, padarot programmētājus un lietotājus labākus to izmantot. Jaunākās izmaiņas notika 1997. gadā, kad awk redzēja piekļuvi tīklam - nodrošinot lietotājiem iespēju attālināti risināt problēmas.
Pēdējā pārrakstīšana tika veikta 2011. gadā, kad Džons Haque pārrakstīja gawk iekšējās daļas.
Lietas, ko varat darīt ar AWK
Pašlaik vajadzētu būt nedaudz skaidram, ko AWK spēj. Tā ir vispārējas nozīmes skriptu valoda, kas ļauj apstrādāt teksta apstrādi. Pieredzējuši lietotāji to var izmantot arī analīzei un ziņošanai.
AWK nav līdzīga citām programmēšanas valodām, jo tā ir balstīta uz datiem, nevis procesuāla programmēšanas valoda. Tas nozīmē, ka to var efektīvi izmantot, lai veiktu darbības pret teksta ievadi. Īsāk sakot, jūs varat to izmantot, lai pārveidotu datus, tos ievadītu un arī nosūtītu kā standarta izvadi.
Īsāk sakot, jūs varat izmantot AWK, lai veiktu vienkāršas darbības, piemēram, katras ievades rindas sadalīšanu laukos, faila skenēšanu pa rindai, spēles (-u) izpildi spēles līnijās utt! Komanda awk ir noderīga arī procedūras formatētiem pārskatiem un pārveido datu failus. Turklāt jūs arī iegūstat piekļuvi programmēšanas konstrukcijām, piemēram, nosacītām un cilpām, virkņu un aritmētiskām operācijām un izejas rindiņu formatēšanai.
Kā darbojas awk
Šajā sadaļā mēs uzzināsim, kā darbojas awk. Ir svarīgi uzzināt, ka awk ir atšķirīgs ieviešanas veids. Lai nodrošinātu, ka atrodamies vienā lapā, mēs apspriedīsim un izmantosim GNU ieviešanu - kas tautā tiek dēvēts par gawk. Vairumā gadījumu gawk ir saistīts ar awk tulku.
Lai iegūtu labu izpratni, mums vispirms ir jāsaprot ieraksti un lauki.
Ir labi zināms, ka awk var apstrādāt teksta straumes un datu failus. Lai apstrādātu datus, ievade tiek sadalīta laukos un ierakstos. Lai nodrošinātu, ka awk neapgrūtina, vienā brīdī tiek apstrādāts viens ieraksts, līdz tiek sasniegts ievades beigas. Turklāt ieraksti tiek tālāk sadalīti vienkāršās sadaļās, izmantojot ierakstu atdalītāju, izmantojot rakstzīmes. Katrs ieraksts tiek atdalīts, izmantojot jaunas rindas rakstzīmes. Tas nozīmē, ka katru rindu var nosaukt par ierakstu.
Jūs varat izvēlēties iestatīt jaunu ierakstu atdalītāju, izmantojot RS mainīgo.
Tālāk nāk iesniegtais atdalītājs. Kā parasti, katram ierakstam ir lauki, un tie tiek atdalīti, izmantojot lauku atdalītāju. Lauka atdalītājs var būt atstarpe, cilnes, jaunas rindas rakstzīmes un atstarpe. Katram laukam ir atsauce, izmantojot simbolu $, savukārt lauka numurs sākas ar 1. Tas nozīmē, ka pirmo lauku var apzīmēt kā $ 1, savukārt otro lauku - kā $ 2. Tādā veidā n-to lauku var apzīmēt kā $ nf.
AWK programma
Otrais awk aspekts ir awk programma. Ja vēlaties strādāt ar awk, jums jāuzraksta programma, kas komandai ļauj izpildīt vai apstrādāt tekstu. Programma awk piedāvā daudz funkcionalitātes, izmantojot kārtulas un lietotāja definētas funkcijas. Noteikumi darbojas ar darbību pāri vai vienu modeli, un noteikumi tiek atdalīti, izmantojot semikolu vai newline.
Gadījumā, ja jūs domājat, awk programma izskatīsies zemāk.
modelis darbība modelis darbība…
Īsāk sakot, awk programma darbojas pēc atbilstības ierakstiem, pamatojoties uz modeļiem. Ja modelis tiek atrasts ierakstā, tas to apstrādās. Ja nē, tad viss ieraksts tiek saskaņots, lai pārliecinātos, ka kaut kas atbilst, pamatojoties uz noteikumiem.
awk komandu piemēri
Tagad, kad mums ir laba izpratne par komandu awk un kā tā darbojas, mums ir pienācis laiks pārbaudīt dažus awk komandu piemērus.
Ja jūs nekad iepriekš neesat lietojis awk, ieteicams uzzināt, ka awk var izmantot ar šādām opcijām:
awk opcijas programmas fails
Iespējas, kuras varat izmantot ar awk, ir šādas:
- - f fails: To lieto, lai norādītu failu, kurā ir awk skripts
- -F fs: To lieto, lai norādītu failu atdalītāju.
- -v var = vērtība: To izmanto mainīgā deklarēšanai.
1. piemērs: lasiet AWK skriptus
Viens no visizplatītākajiem awk izmantošanas veidiem ir skriptu lasīšana. Kā Linux lietotājs varat izveidot awk skriptu, izmantojot vienpēdiņas.
Lai to izdarītu, terminālā ir jāievada šāda komanda.
$ awk 'print "Laipni lūdzam sveiki, pasaule - AWK apmācība"'
Iepriekš redzamajā piemērā ievadītais tiks atgriezts pašā ekrānā. Komanda turpinās izpildīt, līdz to beigsit, nospiežot CTRL + D.
2. piemērs: Vairāku komandu izmantošana
Vēl viena izplatīta awk izmantošana ir vairāku komandu izmantošana. Kā lietotājs, iespējams, vēlēsities apvienot divas awk komandas vienā, lai iegūtu vēlamo rezultātu. Šajā piemērā mēs izvadīsim virkni un pēc tam aizstāsim otro vārdu virknē ar jaunu ievadi.
$ echo "Sveika pasaule" | awk '$ 2 = "Visums; izdrukāt $ 0"'
Iepriekš minētajā piemērā mēs vispirms atkārtojām terminālu “Hello, World”. Pēc tam mēs sasaistījām vēl vienu komandu awk, kur mēs aizstājām otro vārdu ar Visumu - un pēc tam beidzot izlaidām virkni, kas ir Hello Universe.
3. piemērs: Mainīgā izmantošana
Mainīgie ļauj saglabāt informāciju un piekļūt tai. Ja iepriekš esat izmantojis programmēšanas valodas, jūs noteikti zināt par tām. Awk gadījumā jūs to izmantojat, lai apstrādātu teksta failus. Izmantojot mainīgos, failā varat piekļūt noteiktiem datu laukiem tāpat kā zemāk.
Šim nolūkam mēs izveidojām jaunu teksta failu mynewfile, kur mēs ievadām dažas nejaušas, bet skaistas līnijas.
Pēc tam jums jāpalaiž komanda, kā parādīts zemāk.
awk 'print $ 1' mynewile
Kā redzat, tas izvada konkrēto mainīgo, kas parāda šo lauku no faila. Jums vajadzētu redzēt arī kļūdu, kuru es pieļāvu.
4. piemērs: AWK pirmapstrāde
Izmantojot komandu awk, varat pievienot priekšapstrādi. Lai to izdarītu, jums jāizmanto BEGIN atslēgvārds.
Ja lasāt uzmanīgi, mēs iepriekš izveidojām jaunu failu. Mēģināsim izmantot awk pirmapstrādi, lai parādītu faila saturu.
Komanda tam ir šāda.
awk 'awk BEGIN print "Faila saturs:"> print $ 0', mynewfile
Iepriekš redzamais ekrānuzņēmuma piemērs nav pareizs. Es izmantoju “Begin”, nevis “BEGIN”, tāpēc jūs neredzat, ka izdrukātais paziņojums tiek izpildīts. Atstāju to, lai jūs varētu izmēģināt un uzzināt, kā iet jūsu rezultāts!
5. piemērs: skripta lasīšana no faila
Šis ir grūts. Šeit faila lasīšanai varat izmantot awk skriptu.
Mēs izveidojam jaunu skriptu, kas satur sekojošo.
print $ 1 "Visums sākas ar" $ 6 "
Mēs saglabājām failu kā avīžu rakstu.
Tagad terminālā palaidiet šādu komandu.
$ awk -F: -f avīžu raksts / etc / passwd
Aizraujoši, pareizi!
6. piemērs: AWK pēcapstrāde
Tālāk mēs apskatīsim AWK pēcapstrādi. Tas darbojas līdzīgi kā iepriekšēja apstrāde, taču šoreiz pēcapstrādē tiek izmantota komanda END.
$ awk 'BEGIN print "Faila saturs sākas tūlīt:">> print $ 0>> END print "print" Fails beidzas "' mynewfile
7. piemērs: lietotāja definēti mainīgie
Mainīgos var izmantot arī komandā awk, neizmantojot ciparu vai dolāra zīmi.
Zemāk ir piemērs.
$ awk 'BEGIN test = "Laipni lūdzam FossLinux Awesome Linux Family" drukas testā'
8. piemērs: iebūvētās funkcijas
AWK komandas ir noderīgas arī ar to iebūvētajām funkcijām. Piemēram, varat izmantot matemātiskās funkcijas un arī virknes funkcijas.
$ awk 'BEGIN x - "fossLinux"; print toupper (x) '
$ awk 'BEGIN x = exp (35); izdrukāt x '
9. piemērs: Drukāšanas formatēšana
Varat arī formatēt funkciju printf, kas nāk ar awk. Varat izmantot daudz modifikatoru. Piemēram, jūs varat izmantot c, lai izdrukātu kā virkni; jūs varat arī izmantot d vesela skaitļa vērtībai utt.
$ awk 'BEGIN x = 200 * 200 printf "Rezultāts:% e \ n", x'
10. piemērs: strukturētas komandas
Varat arī izmantot strukturētas komandas, piemēram, if, else, while vai ciklam. Apskatīsim zemāk esošo komandu if piemēru.
$ awk 'if ($ 1> 20) drukāt $ 2' mynewile
Secinājums
Tas mūs noved pie mūsu awk komandu apmācības beigām. Tātad, vai tas jums šķita noderīgs un vai izmantosiet to savam darbam? Komentējiet zemāk un informējiet mūs.