Sužinokite „Linux“

„Linux awk“ komanda su 10 pavyzdžių

„Linux awk“ komanda su 10 pavyzdžių

Kompiuterinės sistemos visada buvo naudojamos vertinant paprastuose tekstiniuose failuose saugomus duomenis. Savo ruožtu pačios kompiuterinės sistemos yra valdomos per žurnalo failus. Šiose dviejose situacijose potencialiai būdinga tai, kad jose yra daug duomenų, kuriuos prieš pradedant skaityti duomenis dažnai reikia supaprastinti; priešingu atveju tai tiesiog glumina.

Pvz., Jei skaitote kai kuriuos duomenis, išdėstytus lentelių forma, norite kai kurių stulpelių, nenorite kitų.

Šis reikalavimas buvo baisus net dieną, todėl GNU projektas turi nuostabų įrankį, kuris padeda vartotojams filtruoti ir išgauti duomenis, kad būtų geresnė patirtis. Ta priemonė yra AWK.

Istorija

AWK iš tikrųjų yra programavimo kalba, skirta teksto apdorojimui. Jis naudojamas duomenims išgauti pagal tam tikrus modelius. Aštuntajame dešimtmetyje jį sukūrė „Bell Labs“, kuriuos atliko Alfredas Aho, Peteris Weinbergeris ir Brianas Kernighanas (jų pavardžių inicialai pagimdė vardą). „Awk“ vystymasis tuo nesibaigė. 1985 m. Buvo pristatyta nauja versija, kuri atnešė naujų pakeitimų komandoje „awk“, įskaitant galimybę valdyti kelis įvesties srautus, apskaičiuotas reguliarias išraiškas, vartotojo nustatytas funkcijas ir daug daugiau! Trumpai tariant, atnaujinimas pavertė ją galingesne programavimo kalba.

„Awk“ įgyvendinimas skiriasi. Siekdamas užtikrinti tinkamą įgyvendinimą, kuris siūlo standartinį požiūrį, Paulas Rubinas parašė gawk 1986 m. Tai gerai veikė su naujesniu awk.

Be to, 1989 m. „System V“ leidime buvo pridėtos naujos funkcijos. Kūrėjai taip pat patobulino tamsius kampus, todėl programuotojams ir vartotojams buvo geriau jį naudoti. Paskutinis pakeitimas įvyko 1997 m., Kai „awk“ pamatė prieigą prie tinklo - suteikdamas vartotojams galimybę spręsti problemas nuotoliniu būdu.

Naujausias perrašymas atliktas 2011 m., Kai Johnas Haque'as perrašė gawk vidų.

Dalykai, kuriuos galite padaryti naudodami AWK

Dabar turėtų būti šiek tiek aišku, ką AWK sugeba. Tai yra bendros paskirties scenarijų kalba, leidžianti tvarkyti tekstą. Pažengę vartotojai taip pat gali naudoti analizei ir ataskaitoms.

AWK nėra panaši į kitas programavimo kalbas, nes yra paremta duomenimis, o ne procedūrine programavimo kalba. Tai reiškia, kad galite jį efektyviai naudoti atlikdami veiksmus prieš teksto įvestį. Trumpai tariant, galite jį naudoti duomenims transformuoti, įvesti ir išsiųsti kaip standartinę išvestį.

Trumpai tariant, galite naudoti AWK paprastoms operacijoms atlikti, pvz., Padalinti kiekvieną įvesties eilutę į laukus, nuskaityti failą eilutėje po eilutę, atlikti veiksmą (-us) atitikties eilutėse ir pan! Komanda awk taip pat naudinga formatuojamoms ataskaitoms formuoti ir duomenų failams transformuoti. Be to, jūs taip pat gausite prieigą prie programavimo konstrukcijų, tokių kaip sąlyginės ir kilpos, eilutės ir aritmetinės operacijos ir formato išvesties eilutės.

Kaip veikia awk

Šiame skyriuje mes sužinosime, kaip veikia awk. Svarbu sužinoti, kad „awk“ yra skirtingai įgyvendinama. Norėdami įsitikinti, kad esame tame pačiame puslapyje, aptarsime ir naudosime GNU diegimą - kuris populiariai vadinamas gawk. Daugeliu atvejų gawk yra susietas su awk vertėju.

Norėdami gerai suprasti, pirmiausia turime suprasti įrašus ir laukus.

Gerai žinoma, kad „awk“ gali apdoroti tekstinius srautus ir duomenų failus. Norėdami apdoroti duomenis, įvestis padalijama į laukus ir įrašus. Siekiant užtikrinti, kad awk nepervargtų, bet kuriuo metu bus apdorojamas vienas įrašas, kol pasieks įvesties pabaigą. Be to, įrašai skirstomi į paprastus skyrius, naudojant įrašų skyriklį, naudojant simbolius. Be to, kiekvienas įrašas atskiriamas naudojant naujos eilutės simbolius. Tai reiškia, kad kiekviena eilutė gali būti įvardijama kaip įrašas.

Galite pasirinkti nustatyti naują įrašų skyriklį naudodami RS kintamąjį.

Toliau ateina paduotas separatorius. Kaip įprasta, kiekviename įraše yra laukai ir jie atskiriami naudojant laukų skyriklį. Lauko skyriklis gali būti tarpai, skirtukai, naujos eilutės simboliai ir tarpas. Kiekvienas laukas nurodomas naudojant simbolį $, o lauko numeris prasideda 1. Tai reiškia, kad pirmasis laukas gali būti pažymėtas kaip $ 1, o antrasis - kaip $ 2. Tokiu būdu n-tasis laukas gali būti pažymėtas kaip $ nf.

„AWK“ programa

Antrasis „awk“ aspektas yra „awk“ programa. Jei norite dirbti su „awk“, turite parašyti programą, leidžiančią komandai vykdyti arba apdoroti tekstą. Programa „awk“ siūlo daug funkcionalumo, naudojant taisykles ir vartotojo nustatytas funkcijas. Taisyklės veikia su veiksmų pora arba vienu šablonu, o taisyklės yra atskirtos naudojant kabliataškius arba „newline“.

Jei jums įdomu, „awk“ programa atrodys taip, kaip nurodyta toliau.

modelis veiksmas modelis veiksmas… 

Trumpai tariant, „awk“ programa veikia pagal įrašus pagal modelius. Jei modelis randamas įraše, jis jį apdoros. Jei ne, tada suderinamas visas įrašas, kad įsitikintumėte, jog kažkas atitinka taisykles.

awk komandų pavyzdžiai

Dabar, kai gerai suprantame komandą awk ir kaip ji veikia, atėjo laikas patikrinti kai kuriuos komandos awk pavyzdžius.

Jei dar niekada nenaudojote „awk“, galbūt norėsite žinoti, kad „awk“ galima naudoti tokiomis parinktimis, kaip nurodyta toliau:

awk parinkčių programos failas

Su „awk“ galite naudoti šias parinktis:

1 pavyzdys: perskaitykite AWK scenarijus

Vienas iš labiausiai paplitusių awk naudojimo būdų yra scenarijų skaitymas. Kaip „Linux“ vartotojas galite sukurti „awk“ scenarijų naudodamiesi vienkartinėmis kabutėmis.

Norėdami tai padaryti, terminale turite įvesti šią komandą.

$ awk 'print "Sveiki atvykę į sveiką pasaulį, AWK pamoka"'

Ankstesniame pavyzdyje, ką įvesite, jis bus grąžintas į patį ekraną. Komanda bus vykdoma tol, kol baigsite ją paspausdami CTRL + D.

2 pavyzdys: kelių komandų naudojimas

Kitas įprastas „awk“ naudojimas yra kelių komandų naudojimas. Kaip vartotojas, norėdami gauti norimą rezultatą, galbūt norėsite sujungti dvi „awk“ komandas į vieną. Šiame pavyzdyje mes išvesime eilutę ir pakeisime antrą eilutės žodį nauju įvestimi.

$ aidas „Sveikas pasaulis“ | awk '$ 2 = "Visata; spausdinti $ 0"'

Pirmiau pateiktame pavyzdyje mes pirmiausia atkartojome terminą „Hello, World“. Tada mes sujungėme dar vieną komandą awk, kur antrąjį žodį pakeitėme Visata - ir tada galiausiai išvedėme eilutę, kuri yra „Hello Universe“.

3 pavyzdys: kintamojo naudojimas

Kintamieji leidžia jums saugoti informaciją ir prieiti prie jų. Jei anksčiau naudojote programavimo kalbas, tikrai žinote apie jas. „Awk“ atveju jį naudojate tekstiniams failams apdoroti. Naudodami kintamuosius, galite pasiekti tam tikrus failo duomenų laukus, kaip nurodyta toliau.

Tuo tikslu sukūrėme naują tekstinį failą „mynewfile“, kuriame įvedėme keletą atsitiktinių, bet gražių eilučių.

Tada turite paleisti komandą, kaip parodyta žemiau.

awk 'print $ 1' mano failas

Kaip matote, jis pateikia tą konkretų kintamąjį, kuris rodo tą lauką iš failo. Be to, turėtumėte pamatyti klaidą, kurią padariau.

4 pavyzdys: AWK išankstinis apdorojimas

Naudodami komandą awk, galite pridėti išankstinį apdorojimą. Norėdami tai padaryti, turite naudoti raktinį žodį BEGIN.

Jei skaitote atidžiai, aukščiau sukūrėme naują failą. Pabandykime naudoti awk išankstinį apdorojimą failo turiniui parodyti.

Komanda yra tokia, kaip nurodyta toliau.

awk 'awk BEGIN print "Failo turinys:"> print $ 0', mynewfile

Aukščiau pateiktas ekrano kopijos pavyzdys nėra teisingas. Vietoj „BEGIN“ naudojau „Begin“, todėl nematote, kad vykdomas spausdinimo sakinys. Palieku tai išbandyti ir sužinoti, kaip sekasi jūsų rezultatas!

5 pavyzdys: scenarijaus skaitymas iš failo

Šis yra keblus. Čia galite naudoti awk scenarijų skaityti failą.

Sukuriame naują scenarijų, kuriame yra:.

print $ 1 "visatos pradžia yra" $ 6 "

Išsaugojome failą kaip laikraštį.

Dabar terminale paleiskite šią komandą.

$ awk -F: -f laikraštis / etc / passwd

Žavi, tiesa!

6 pavyzdys: AWK vėlesnis apdorojimas

Toliau mes apžvelgsime AWK vėlesnį apdorojimą. Jis veikia panašiai kaip išankstinis apdorojimas, tačiau šį kartą po apdorojimo naudojama komanda END.

$ awk 'BEGIN print "Failo turinys prasideda dabar:">> print $ 0>> END print "print" Failas baigiasi "' mynewfile

7 pavyzdys: vartotojo nustatyti kintamieji

Taip pat galite naudoti kintamuosius komandoje awk nenaudodami skaičiaus ar dolerio ženklo.

Žemiau pateikiamas pavyzdys.

$ awk 'BEGIN test = "Sveiki atvykę į" FossLinux Awesome Linux Family "spausdinimo testą'

8 pavyzdys: Įtaisytos funkcijos

„Awk“ komandos taip pat praverčia su įmontuotomis funkcijomis. Pvz., Galite naudoti matematines ir „String“ funkcijas.

$ awk 'BEGIN x - "fossLinux"; spausdinti viršų (x) '
$ awk 'BEGIN x = exp (35); spausdinti x '

9 pavyzdys: spausdinimo formatavimas

Taip pat galite suformatuoti „printf“ funkciją, kuri pateikiama kartu su „awk“. Yra daug modifikatorių, kuriuos galite naudoti. Pavyzdžiui, galite naudoti c, jei norite atsispausdinti kaip eilutę; d taip pat galite naudoti sveiko skaičiaus reikšmę ir pan.

$ awk 'BEGIN x = 200 * 200 printf "Rezultatas:% e \ n", x'

10 pavyzdys: struktūrizuotos komandos

Taip pat galite naudoti struktūrizuotas komandas, pvz., If, else, while arba ciklui. Pažiūrėkime žemiau pateiktą „if“ komandos pavyzdį.

$ awk 'if ($ 1> 20) spausdinti $ 2' mynewile

Išvada

Tai veda mus į mūsų „awk“ komandos pamokos pabaigą. Taigi, ar jums tai buvo naudinga ir ar ketinate tai naudoti savo darbui?? Pakomentuokite žemiau ir praneškite mums.

Kaip užfiksuoti ir perduoti savo žaidimų sesiją sistemoje „Linux“
Anksčiau žaidimai buvo laikomi tik pomėgiu, tačiau laikui bėgant lošimų pramonė labai augo technologijų ir žaidėjų skaičiaus atžvilgiu. Žaidimų audito...
Geriausi žaidimai, kuriuos reikia žaisti naudojant rankos stebėjimą
„Oculus Quest“ neseniai pristatė puikią rankos stebėjimo be valdiklių idėją. „Oculus Quest“ rankų sekimo žaidimai iki šiol buvo ribojami, kai žaidimų ...
Kaip rodyti OSD perdangą viso ekrano „Linux“ programose ir žaidimuose
Žaisdami viso ekrano žaidimus arba naudodamiesi programomis be išsiblaškymo viso ekrano režimu, galite nutraukti nuo susijusios sistemos informacijos,...