GNU/Linux >> Znalost Linux >  >> Linux

7 příkladů výkonných operátorů Awk (unární, binární, aritmetické, řetězcové, přiřazení, podmíněné, regulární awk operátory)

Tento článek je součástí právě probíhající série příkladů výukových programů Awk. V našich dřívějších článcích o awk jsme diskutovali o tisku awk, uživatelsky definovaných proměnných awk a vestavěných proměnných awk.

Jako každý jiný programovací jazyk má i Awk mnoho operátorů pro operace s čísly a řetězci. V tomto článku si proberme všechny klíčové operátory awk .

V Awk existují dva typy operátorů.

  1. Unární operátor – Operátor, který přijímá jeden operand, se nazývá unární operátor.
  2. Binární operátor – Operátor, který přijímá více než jeden operand, se nazývá binární operátor.

Awk Unary Operator

Operátor Popis
+ Zvyšte číslo
Negujte číslo
++ Automatické zvýšení
Automatické snížení

Awk binární operátor

V Awk jsou k dispozici různé druhy binárních operátorů. Je klasifikován na základě jeho použití.

Awk aritmetické operátory

Pro provádění aritmetických výpočtů se používají následující operátory.

Operátor Popis
+ Dodatek
Odčítání
* Násobení
/ Divize
% Divize Modulo

Operátor řetězce Awk

Pro zřetězení řetězců má Awk následující operátory.

Operátor Popis
(mezera) Zřetězení řetězců

Operátoři přiřazení Awk

Awk má operátor přiřazení a operátor přiřazení zkratky, jak je uvedeno níže.

Operátor Popis
= Úkol
+= Přiřazení přidání zkratky
-= Zkratka přiřazení odečítání
*= Přiřazení zkratky násobení
/= Přiřazení dělení zkratek
%= Zkratka přiřazení dělení modulo

Awk podmíněné operátory

Awk má následující seznam podmíněných operátorů, které lze použít s řídicími strukturami a cyklickým příkazem, které budou popsány v následujícím článku.

Operátor Popis
> Je větší než
>= Je větší nebo rovno
< Je menší než
<= Je menší nebo rovno
<= Je menší nebo rovno
== Je rovno
!= Není rovno
&& Oba podmíněné výrazy by měly být pravdivé
|| Jakýkoli z podmíněných výrazů by měl být pravdivý

Awk Operátor regulárních výrazů

Operátor Popis
~ Operátor shody
!~ Žádný operátor shody

Příklady operátorů Awk

Nyní se podívejme na některé příklady, které používají operátory awk. V těchto příkladech použijme jako vstupní soubor /etc/passwd.

$ cat /etc/passwd
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
saned:x:110:116::/home/saned:/bin/false
pulse:x:111:117:PulseAudio daemon,,,:/var/run/pulse:/bin/false
gdm:x:112:119:Gnome Display Manager:/var/lib/gdm:/bin/false

Awk Příklad 1:Spočítejte celkový počet polí v souboru.

Níže uvedený skript awk odpovídá všem řádkům a neustále přidává počet polí v každém řádku pomocí operátoru přiřazení zkratky. Počet dosud zobrazených polí je uložen v proměnné s názvem „celkem“. Po zpracování vstupu se provede speciální vzor ‚END {…}‘, který vytiskne celkový počet polí.

$ awk -F ':' '{ total += NF }; END { print total }' /etc/passwd
49

Awk příklad 2:Spočítejte počet uživatelů, kteří používají /bin/sh shell

V níže uvedeném skriptu awk odpovídá poslednímu poli všech řádků obsahujících vzor /bin/sh. Regulární výraz by měl být uzavřen mezi //. Takže všechna přední lomítka(/) musí být v regulárním výrazu escapována. Když se řádek shoduje s proměnnou ‚n‘, zvýší se o jedničku. Vytištěna hodnota 'n' v sekci END.

$ awk -F ':' '$NF ~ /\/bin\/sh/ { n++ }; END { print n }' /etc/passwd
2

Příklad Awk 3:Najděte podrobnosti o uživateli, který má nejvyšší USER ID

Níže uvedený skript awk sleduje největší číslo v poli v proměnné ‚maxuid‘ a odpovídající řádek bude uložen v proměnné ‚maxline‘. Jakmile zacyklí všechny řádky, vytiskne je.

$ awk -F ':'  '$3 > maxuid { maxuid=$3; maxline=$0 }; END { print maxuid, maxline }' /etc/passwd
112 gdm:x:112:119:Gnome Display Manager:/var/lib/gdm:/bin/false

Příklad Awk 4:Tisk sudých řádků

Níže uvedený skript awk zpracuje každý řádek a zkontroluje NR % 2 ==0, tj. pokud je NR násobkem 2. Provede výchozí operaci, která vytiskne celý řádek.

$ awk 'NR % 2 == 0' /etc/passwd
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
pulse:x:111:117:PulseAudio daemon,,,:/var/run/pulse:/bin/false

Příklad Awk 5. Vytiskněte každý řádek, který má stejné USER ID a GROUP ID

Níže uvedený skript awk vytiskne řádek pouze v případě, že se $3 (ID UŽIVATELE) a $4 (ID skupiny) rovnají. Kontroluje tuto podmínku pro každý řádek vstupu, pokud se shoduje, vytiskne celý řádek.

$awk -F ':' '$3==$4' passwd.txt
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh

Příklad Awk 6:Tisk podrobností o uživateli, který má USER ID větší nebo rovno 100 a který musí používat /bin/sh

V níže uvedeném příkazu Awk jsou dva podmíněné výrazy, jeden je ID uživatele ($3) větší nebo rovno 100 a druhý je poslední pole, které by se mělo shodovat s /bin/sh , '&&' se vytiskne pouze v případě, že oba výše uvedené podmínky jsou pravdivé.

$ awk -F ':' '$3>=100 && $NF ~ /\/bin\/sh/' passwd.txt
libuuid:x:100:101::/var/lib/libuuid:/bin/sh

Příklad Awk 7:Tisk údajů o uživateli, který nemá komentáře v souboru /etc/passwd

Níže uvedený skript Awk přečte každý řádek a zkontroluje, zda je páté pole prázdné, pokud je prázdné, řádek vytiskne.

$awk -F ':' '$5 == "" ' passwd.txt
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
saned:x:110:116::/home/saned:/bin/false

Doporučená četba

Sed and Awk 101 Hacks, od Rameshe Natarajan . V prostředí UNIX/Linux trávím několik hodin denně a zabývám se textovými soubory (data, konfigurační soubory a soubory protokolu). Sed a Awk používám pro svou práci s textem. Na základě mých zkušeností se Sed and Awk jsem napsal e-knihu Sed and Awk 101 Hacks, která obsahuje 101 praktických příkladů různých pokročilých funkcí Sed a Awk, které zlepší váš život v UNIX / Linux. I když Sed and Awk používáte několik let a nečetli jste tuto knihu, udělejte si laskavost a přečtěte si tuto knihu. Budete ohromeni možnostmi nástrojů Sed a Awk.


Linux
  1. Výukový program Awk:Pochopte proměnné Awk pomocí 3 praktických příkladů

  2. Úvodní výukový program Awk – 7 příkladů tisku Awk

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

  1. Pole AWK vysvětleno na 5 praktických příkladech

  2. 7 Linux Grep OR, Grep AND, Grep NOT Příklady operátorů

  3. 6 Operátorů řetězení příkazového řádku Bash Shell v Linuxu

  1. Začínáme s awk, výkonným nástrojem pro analýzu textu

  2. Výukový program programování v Linuxu C Část 12 – Operátory přiřazení a podmíněné výrazy

  3. Skriptování Linuxu:hexadecimální číslo na binární řetězec