Co je AWK NF?

Co Je Awk Nf



Skriptovací jazyk AWK má také řadu vestavěných speciálních proměnných, které slouží k některým předem definovaným účelům. Jednou takovou vestavěnou proměnnou je „NF“, která má svou vlastní předdefinovanou funkci. Tento článek prozkoumá účel této vestavěné proměnné AWK tím, že předvede některé relevantní příklady v Ubuntu 20.04.

AWK NF v Ubuntu 20.04:

Proměnná „NF“ AWK se používá k vytištění počtu polí ve všech řádcích libovolného poskytnutého souboru. Tato vestavěná proměnná prochází postupně všechny řádky souboru a vypisuje počet polí pro každý řádek zvlášť. Chcete-li této funkci dobře porozumět, budete si muset přečíst níže uvedené příklady.

Příklady pro demonstraci použití AWK NF v Ubuntu 20.04:

Následující čtyři příklady byly navrženy tak, aby vás naučily používat AWK NF velmi snadno srozumitelným způsobem. Všechny tyto příklady byly implementovány pomocí operačního systému Ubuntu 20.04.







Příklad č. 1: Tisk počtu polí z každého řádku textového souboru:

V tomto příkladu jsme chtěli vytisknout počet polí nebo sloupců každého řádku nebo řádku nebo záznamu textového souboru v Ubuntu 20.04. Abychom vám ukázali způsob, jak toho dosáhnout, vytvořili jsme textový soubor zobrazený na obrázku níže. Tento textový soubor obsahuje sazby jablek na kilogram z pěti různých měst Pákistánu.





Jakmile jsme vytvořili tento ukázkový textový soubor, provedli jsme následující příkaz k vytištění počtu polí z každého řádku tohoto textového souboru v našem terminálu:





$ awk ' { tisknout NF } AppleRates.txt

V tomto příkazu máme klíčové slovo „awk“, které ukazuje, že spouštíme příkaz AWK následovaný příkazem „print NF“, který jednoduše projde každý řádek cílového textového souboru a vytiskne počet polí pro každý zvlášť. řádek textového souboru. Nakonec máme název tohoto textového souboru (jehož pole se mají počítat), což je v našem případě „AppleRatest.txt“.



Protože jsme měli přesně stejný počet polí pro všech pět řádků našeho textového souboru, tj. 2, vytiskne se stejný počet jako počet polí pro všechny řádky textového souboru kvůli provedení tohoto příkazu. To lze vidět z obrázku níže:

Příklad č. 2: Vytiskněte počet polí z každého řádku textového souboru prezentovatelným způsobem:

Výstup zobrazený ve výše uvedeném příkladu lze také pěkně prezentovat zobrazením čísel řádků a počtu polí každého řádku textového souboru. Navíc můžeme také oddělit čísla řádků od počtu polí s libovolným speciálním znakem dle našeho výběru. Abychom vám to ukázali, použijeme stejný textový soubor, který jsme použili pro náš první příklad. Náš příkaz, který se má v tomto případě provést, se však bude mírně lišit a je následující:

$ awk ' { tisknout NR, „---“, NF } AppleRates.txt

V tomto příkazu jsme zavedli vestavěnou proměnnou AWK „NR“, která jednoduše vytiskne čísla řádků všech řádků našeho cílového textového souboru. Navíc jsme použili tři pomlčky, „-“ jako speciální znak k oddělení čísel řádků od počtu polí našeho poskytnutého textového souboru.

Tento mírně upravený výstup stejného textového souboru je zobrazen na obrázku níže:

Příklad č. 3: Tisk prvního a posledního pole z každého řádku textového souboru:

Kromě pouhého počítání počtu polí všech řádků poskytnutého textového souboru lze speciální proměnnou „NF“ AWK také použít k extrahování skutečných hodnot posledního pole z poskytnutého textového souboru. Opět jsme použili stejný textový soubor, který jsme použili pro naše první dva příklady. V tomto příkladu však chceme vytisknout skutečné hodnoty prvního a posledního pole našeho textového souboru. Za tímto účelem jsme provedli následující příkaz:

$ awk ' { tisk 1 $ , $ NF } AppleRates.txt

Za klíčovým slovem „awk“ následuje příkaz „print $1, $NF“ v tomto příkazu. Speciální proměnná „$1“ byla použita k tisku hodnot prvního pole nebo prvního sloupce našeho poskytnutého textového souboru, zatímco proměnná „$NF“ AWK byla použita k tisku hodnot posledního pole nebo posledního sloupce. našeho cílového textového souboru. Zde si musíte povšimnout, že když použijeme proměnnou „NF“ AWK tak, jak je, pak se používá k počítání počtu polí každého řádku; pokud je však použit se symbolem dolaru „$“, pak jednoduše extrahuje skutečné hodnoty z posledního pole poskytnutého textového souboru. Zbytek příkazu je víceméně stejný jako u příkazů, které byly použity v prvních dvou příkladech.

Na výstupu zobrazeném níže můžete vidět, že skutečné hodnoty z prvního a posledního pole našeho poskytnutého textového souboru byly vytištěny na terminálu. Můžete vidět, že tento výstup je do značné míry podobný výstupu příkazu „cat“ pouze proto, že jsme v našem poskytnutém textovém souboru měli pouze dvě pole; tedy svým způsobem byl v důsledku provedení výše uvedeného příkazu na terminálu vytištěn obsah celého našeho textového souboru.

Příklad č. 4: Oddělte záznamy s chybějícími poli v textovém souboru:

Občas se v textovém souboru vyskytují záznamy s určitými chybějícími poli a možná budete chtít tyto záznamy oddělit od záznamů, které jsou kompletní ve všech aspektech. To lze také provést pomocí proměnné „NF“ AWK. Za tímto účelem jsme vytvořili textový soubor s názvem „ExamMarks.txt“, který obsahuje výsledky zkoušek pěti různých studentů ve třech různých zkouškách spolu s jejich jmény. U třetí zkoušky však někteří studenti chyběli, kvůli čemuž jim chybělo skóre. Tento textový soubor je následující:

Abychom odlišili záznamy s chybějícími poli od záznamů s úplnými poli, provedeme příkaz uvedený níže:

$ awk ' { tisknout NR, “--- > “, NF } ExamMarks.txt

Tento příkaz je stejný jako ten, který jsme použili pro náš druhý příklad. Z výstupu tohoto příkazu zobrazeného na následujícím obrázku však můžete vidět, že první a čtvrtý záznam jsou kompletní, zatímco druhý, třetí a pátý záznam obsahují chybějící pole.

Závěr:

Účelem tohoto článku bylo vysvětlit použití speciální proměnné „NF“ AWK. Nejprve jsme krátce probrali, jak tato proměnná funguje, a poté jsme tento koncept dobře rozpracovali pomocí čtyř různých příkladů. Jakmile dobře porozumíte všem sdíleným příkladům, budete moci použít proměnnou „NF“ AWK k výpočtu celkového počtu polí a vytisknout skutečné hodnoty posledního pole poskytnutého souboru.