GNU/Linux >> Znalost Linux >  >> Linux

AWK vs NAWK vs GAWK

Awk je výkonný jazyk pro manipulaci a zpracování textových souborů. To je zvláště užitečné, když jsou řádky v textových souborech ve formátu záznamu. tj. záznam obsahující více polí oddělených oddělovačem. I když vstupní soubor není ve formátu záznamu, stále můžete pomocí awk provést základní zpracování souborů a dat. Pomocí awk můžete také psát programovací logiku, i když neexistují žádné vstupní soubory, které je třeba zpracovat.

Stručně řečeno, AWK je výkonný jazyk, který se může hodit při provádění každodenních rutinních úloh.

Pokud s awk začínáte, začněte přečtením tohoto úvodního výukového programu Awk, který je součástí série výukových programů Awk.

Křivka učení na AWK je mnohem menší než křivka učení na jiných jazycích. Pokud již znáte program C, oceníte, jak jednoduché a snadné je naučit se AWK.

AWK původně napsali tři vývojáři — A. Aho, B. W. Kernighan a P. Weinberger. Takže název AWK pochází z iniciál těchto tří vývojářů.

Níže jsou uvedeny tři varianty AWK:

1. Awk

AWK je původní AWK, který napsali A. Aho, B. W. Kernighan a P. Weinberger.

2. Nawk

NAWK znamená „New AWK“. Toto je verze Awk od AT&T.

3. Gawk

GAWK znamená „GNU AWK“. Všechny distribuce Linuxu jsou dodávány s GAWK. Toto je plně kompatibilní s AWK a NAWK.

V Linuxu zadání buď awk nebo gawk vyvolá GAWK. awk je propojen s gawk, jak je uvedeno níže v systémech Linux.

# ls -l /bin/awk /usr/bin/awk
lrwxrwxrwx 1 root root  4 Jan  5 23:13 /bin/awk -> gawk
lrwxrwxrwx 1 root root 14 Jan  5 23:13 /usr/bin/awk -> ../../bin/gawk

Následující tabulka shrnuje různé funkce, které jsou v těchto verzích k dispozici. Jak vidíte níže, gawk je nadmnožina, která obsahuje všechny funkce původního awk a nawk.

Awk vs. Nawk vs Gawk

Stáhněte si rozdíly Awk vs Nawk vs Gawk ve formátu cheatsheet PDF.

Následující základní vestavěné proměnné FS, OFS, RS, ORS, NR, NF a FILENAME jsou dostupné ve všech verzích awk.

Funkce Popis AWK NAWK GAWK
FS Oddělovač vstupních polí Ano Ano Ano
OFS Oddělovač výstupních polí Ano Ano Ano
RS Oddělovač záznamů Ano Ano Ano
ORS Výstupní oddělovač záznamů Ano Ano Ano
NR Číslo záznamu Ano Ano Ano
NF Počet polí v záznamu Ano Ano Ano
NÁZEV SOUBORU Obsahuje aktuální vstupní soubor, který se zpracovává Ano Ano Ano

Všechny následující funkce nejsou v původním awk dostupné. Jsou k dispozici v nawk a/nebo gawk, jak je uvedeno níže.

Funkce Popis NAWK GAWK
FNR Soubor „Číslo záznamu“ Ano Ano
ARGC Celkový počet nebo argumenty předané skriptu awk Ano Ano
ARGV Pole obsahující všechny argumenty skriptu awk Ano Ano
ARGIND Indexovat na ARGV pro načtení aktuálního názvu souboru Ano
SUBSEP Oddělovač dolního indexu pro indexy pole Ano Ano
RSTART Funkce Match nastaví RSTART s počátečním umístěním str1 v str2 Ano Ano
DÉLKA DÉLKY Funkce Match nastaví RLENGTH s délkou str1 Ano Ano
OFMT Awk to používá k rozhodnutí, jak vytisknout hodnoty. Výchozí hodnota je „%.6g“ Ano Ano
ENVIRON Pole obsahující všechny proměnné prostředí a hodnoty Ano
IGNORECASE Výchozí je 0. Při nastavení na 1 se nerozlišují malá a velká písmena pro porovnání řetězců a reg-ex. Ano
ERRNO Obsahuje chybovou zprávu I/O operace. např. při používání funkce getline. Ano
BINMODE n Nastavit binární režim pro I/O. n může být 1 (vstupní soubory), 2 (výstupní soubory) nebo 3 (všechny soubory) Ano
CONVFMT Formát použitý při převodu čísla na řetězec. Ano
ŠÍŘKA POLE n n je číslo oddělené mezerou, které udává šířku sloupce. Pokud je k dispozici, gawk použije toto místo FS. Ano
LINT n n může být číslo. Když n je nenulové číslo (označující true), gawk zobrazí fatální, neplatné nebo varovné zprávy lint (stejné jako příkazový řádek –lint) Ano
TEXTDOMAIN Toto se používá pro internacionalizaci. Ano
sub(str1,str2,var) Ve vstupním řetězci (var) je str1 nahrazeno str2 a výstup je uložen zpět ve var Ano Ano
gsub(str1,str2,var) Stejné jako sub, ale globální. Provádí více substitucí na stejném vstupním řetězci (var). Ano Ano
match(str1,str2) Vrátí kladné číslo, když je v str2 přítomen str1. Ano Ano
getline Přečtěte si další řádek z jiného vstupního souboru. Nastaví $0, NF Ano Ano
getline var Přečtěte si další řádek z jiného vstupního souboru a uložte jej do proměnné (var) Ano Ano
toupper(str) Převede str na velká písmena Ano
tolower(str) Převede str na malá písmena Ano
|& Obousměrná komunikace mezi příkazem awk a externím procesem Ano
systime() Aktuální čas v čase epochy. Kombinujte se strftime. např. print strftime(“%c”,systime()) Ano

Linux
  1. 4 Příklady prohlášení Awk If ( if, if else, if else if, :? )

  2. sledovat velikost souboru v linuxu

  3. Výchozí oddělovač polí pro awk

  1. Použijte awk k výpočtu frekvence písmen

  2. Praktický průvodce učením awk

  3. Použití grep vs awk

  1. Extrahování a zobrazení dat pomocí awk

  2. Průvodce pro začátečníky koukáním

  3. Příklady příkazů awk v Linuxu