Ahoj

Ako používať AWK v systéme Linux

Ako používať AWK v systéme Linux

Nástroje, ktoré ponúka Linux, sa často riadia dizajnovou filozofiou systému UNIX. Akýkoľvek nástroj by mal byť malý, mal by pre vstupy / výstupy používať obyčajný text a mal by pracovať modulárne. Vďaka dedičstvu máme niektoré z najlepších funkcií spracovania textu pomocou nástrojov ako sed a awk.

V systéme Linux je nástroj awk predinštalovaný na všetkých distribúciách systému Linux. Samotný AWK je programovací jazyk. Nástroj AWK je iba tlmočníkom programovacieho jazyka AWK. V tejto príručke si prečítajte, ako používať AWK v systéme Linux.

Použitie AWK

Nástroj AWK je najužitočnejší, keď sú texty usporiadané v predvídateľnom formáte. Je to celkom dobré pri analýze a manipulácii s tabuľkovými údajmi. Funguje riadok po riadku, na celom textovom súbore.

Predvolené správanie awk je použitie medzier (medzier, tabulátorov a pod.).) na oddeľovanie polí. Našťastie mnoho konfiguračných súborov v systéme Linux dodržiava tento vzorec.

Základná syntax

Takto vyzerá štruktúra príkazov awk.

$ awk '// ; ; '

Časti príkazu sú úplne vysvetľujúce. Awk môže fungovať bez vyhľadávacej alebo akčnej časti. Ak nie je zadané nič, predvolenou akciou pre zhodu bude iba tlač. Awk v zásade vytlačí všetky zhody nájdené v súbore.

Ak nie je zadaný vyhľadávací vzor, ​​potom awk vykoná zadané akcie na každom jednom riadku súboru.

Ak sú zadané obidve časti, potom awk pomocou vzoru určí, či to odráža aktuálny riadok. Ak sa zhoduje, potom awk vykoná uvedenú akciu.

Upozorňujeme, že awk môže pracovať aj na presmerovaných textoch. To sa dá dosiahnuť vložením obsahu príkazu do awk, aby sa dalo konať. Získajte viac informácií o príkaze potrubia Linux.

Na ukážkové účely je tu ukážka textového súboru. Obsahuje 10 riadkov, 2 slová na riadok.

$ vzorka mačky.TXT

Regulárny výraz

Jednou z kľúčových funkcií, vďaka ktorým je awk mocným nástrojom, je podpora regulárneho výrazu (skrátene regex). Regulárny výraz je reťazec, ktorý predstavuje určitý vzor znakov.

Tu je zoznam niektorých najbežnejších syntaxí regulárnych výrazov. Tieto syntaxe regulárneho výrazu nie sú jedinečné iba pre awk. Toto sú takmer univerzálne syntaxe regexu, takže ich zvládnutie pomôže aj v iných aplikáciách / programovaní, ktoré zahŕňajú regulárny výraz.

  • Základné znaky: Všetky alfanumerické znaky podčiarkujú (_) atď.
    • Sada znakov: Aby ste si uľahčili prácu, v regulárnom výraze sú skupiny znakov. Napríklad veľké písmená (A-Z), malé písmená (a-z) a číslice (0-9).
  • Meta-znaky: Toto sú znaky, ktoré vysvetľujú rôzne spôsoby rozšírenia bežných znakov.
    • Obdobie (.): Platí ľubovoľná zhoda znakov na danom mieste (okrem nového riadku).
    • Hviezdička (*): Nula alebo viac existencií bezprostredného znaku, ktorý predchádza, je platná.
    • Konzola ([]): Zhoda je platná, ak sa na danom mieste zhoduje niektorý zo znakov v zátvorke. Dá sa kombinovať so znakovými sadami.
    • Vsuvka (^): Zápas bude musieť byť na začiatku čiary.
    • Dolár ($): Zápas bude musieť byť na konci riadku.
    • Spätné lomítko (\): Ak sa musí použiť akýkoľvek metaznak v doslovnom zmysle slova.

Tlač textu

Ak chcete vytlačiť všetok obsah textového súboru, použite príkaz print. V prípade vyhľadávacieho vzoru nie je definovaný žiadny vzor. Awk teda vytlačí všetky riadky.

$ awk 'print' vzorka.TXT

Tu je „tlač“ príkazom AWK, ktorý vytlačí obsah vstupu.

Vyhľadávanie reťazcov

AWK môže na danom texte vykonať základné textové vyhľadávanie. V časti so vzorom musí byť nájdený text.

V nasledujúcom príkaze awk vyhľadá text „rýchlo“ na všetkých riadkoch vzorky súboru.TXT.

$ awk '/ quick /' vzorka.TXT

Teraz použijeme niekoľko regulárnych výrazov na ďalšie doladenie vyhľadávania. Nasledujúci príkaz vytlačí všetky riadky, ktoré majú na začiatku „hnedú“ farbu.

$ awk '/ ^ hnedá /' vzorka.TXT

Čo tak nájsť niečo na konci riadku? Nasledujúci príkaz vytlačí všetky riadky, ktoré majú na konci slovo „quick“.

$ awk '/ quick $ /' vzorka.TXT

Vzor divokej karty

V nasledujúcom príklade sa bude prezentovať použitie kurzoru (.). Tu môžu byť pred znakom „e“ akékoľvek dva znaky.

$ awk '/ ... e /' vzorka.TXT

Vzor divokej karty (s hviezdičkou)

Čo ak na danom mieste môže byť ľubovoľný počet znakov? Ak chcete nájsť zodpovedajúci znak na danom mieste, použite hviezdičku (*). Tu AWK porovná všetky riadky, ktoré majú za „znakom“ ľubovoľný počet znakov.

$ awk '/ vzor * /'.TXT

Konzolový výraz

Nasledujúci príklad predvedie, ako používať výraz hranatej zátvorky. Výraz v zátvorke hovorí, že na danom mieste bude zhoda platná, ak sa zhoduje so sadou znakov uzavretých v zátvorkách. Napríklad nasledujúci príkaz sa bude zhodovať s „The“ a „Tee“ ako platnými zhodami.

$ awk '/ T [on] e /' vzorka.TXT

V regulárnom výraze je niekoľko preddefinovaných znakových sád. Napríklad skupina všetkých veľkých písmen je označená ako „A – Z“. V nasledujúcom príkaze awk priradí všetky slová, ktoré obsahujú veľké písmeno.

$ awk '/ [A-Z] /' vzorka.TXT

Zoznámte sa s nasledujúcim použitím znakových sád s výrazom v zátvorkách.

  • [0-9]: Označuje jednu číslicu
  • [a-z]: Označuje jedno malé písmeno
  • [A-Z]: Označuje jedno veľké písmeno
  • [a-zA-z]: Označuje jedno písmeno
  • [a-zA-z 0-9]: Označuje jeden znak alebo číslicu.

Awk preddefinované premenné

AWK prichádza s hromadou preddefinovaných a automatických premenných. Tieto premenné uľahčujú písanie programov a skriptov pomocou AWK.

Tu uvádzame niektoré z najbežnejších premenných AWK, na ktoré narazíte.

  • NÁZOV SÚBORU: Názov súboru aktuálneho vstupného súboru.
  • RS: Oddeľovač záznamu. Z dôvodu povahy AWK spracúva údaje po jednom zázname. Táto premenná tu určuje oddeľovač použitý na rozdelenie toku údajov na záznamy. Predvolene je touto hodnotou znak nového riadku.
  • NR: Číslo aktuálneho vstupného záznamu. Ak je hodnota RS nastavená na predvolenú, potom táto hodnota bude označovať číslo aktuálneho vstupného riadku.
  • FS / OFS: Znaky použité ako oddeľovač polí. Po prečítaní AWK rozdelí záznam do rôznych polí. Oddeľovač je definovaný hodnotou FS. Pri tlači sa AWK znovu pripojí ku všetkým poliam. V súčasnosti však AWK používa oddeľovač OFS namiesto oddeľovača FS. Všeobecne sú FS aj OFS rovnaké, ale nie je to povinné.
  • NF: Počet polí v aktuálnom zázname. Ak sa použije predvolená hodnota „biele medzery“, bude sa zhodovať s počtom slov v aktuálnom zázname.
  • ORS: Oddeľovač záznamov pre výstupné údaje. Predvolená hodnota je znak nového riadku.

Poďme ich skontrolovať v akcii. Nasledujúci príkaz použije premennú NR na vytlačenie riadku 2 až riadku 4 zo vzorky.TXT. AWK podporuje aj logické operátory ako logické a (&&).

$ awk 'NR> 1 && NR < 5' sample.txt

Ak chcete premennej AWK priradiť konkrétnu hodnotu, použite nasledujúcu štruktúru.

$ awk '// ; ; ' =,

Napríklad, ak chcete zo vstupného súboru odstrániť všetky prázdne riadky, zmeňte hodnotu RS na v podstate nič. Je to trik, ktorý využíva nejasné pravidlo POSIX. Určuje, že ak je hodnotou RS prázdny reťazec, potom sú záznamy oddelené postupnosťou, ktorá sa skladá z nového riadku s jedným alebo viacerými prázdnymi riadkami. V POSIXe je prázdny riadok bez obsahu úplne prázdny. Ak však riadok obsahuje medzery, nepovažuje sa to za „prázdny“.

$ awk 'print' RS = "vzorka.TXT

Dodatočné zdroje

AWK je výkonný nástroj s množstvom funkcií. Aj keď sa tento sprievodca venuje mnohým z nich, stále ide iba o základné informácie. Zvládnutie AWK bude trvať viac než len toto. Táto príručka by mala byť príjemným úvodom do nástroja.

Ak si naozaj chcete osvojiť tento nástroj, mali by ste vyskúšať niekoľko ďalších zdrojov.

  • Orezať medzery
  • Použitie podmieneného vyhlásenia
  • Vytlačte rozsah stĺpcov
  • Regulárny výraz s AWK
  • 20 príkladov AWK

Internet je celkom dobré miesto, kde sa niečo naučiť. Existuje veľa úžasných návodov na základy AWK pre veľmi pokročilých používateľov.

Záverečná myšlienka

Dúfajme, že táto príručka pomohla dobre porozumieť základom AWK. Ovládanie AWK môže síce chvíľu trvať, ale z hľadiska výkonu, ktorý dáva, sa mimoriadne oplatí.

Šťastné výpočty!

Hry Zadarmo a open source herné motory pre vývoj hier pre Linux
Zadarmo a open source herné motory pre vývoj hier pre Linux
Tento článok sa bude zaoberať zoznamom bezplatných a otvorených herných nástrojov, ktoré možno použiť na vývoj 2D a 3D hier v systéme Linux. Existuje ...
Hry Výukový program Shadow of the Tomb Raider pre Linux
Výukový program Shadow of the Tomb Raider pre Linux
Shadow of the Tomb Raider je dvanásty prírastok do série Tomb Raider - franšíza akčných adventúr vytvorená Eidosom Montrealom. Túto hru prijali kritic...
Hry Ako zvýšiť rýchlosť FPS v systéme Linux?
Ako zvýšiť rýchlosť FPS v systéme Linux?
FPS znamená Počet snímok za sekundu. Úlohou FPS je merať snímkovú frekvenciu pri prehrávaní videa alebo herných výkonoch. Jednoducho povedané, počet n...