GNU/Linux >> Znalost Linux >  >> Linux

Linuxový příkaz awk s 10 příklady

Počítačové systémy se vždy používaly k analýze cenných dat uložených v jednoduchých textových souborech. Samotné počítačové systémy jsou zase spravovány prostřednictvím souborů protokolu. Co je v těchto dvou situacích potenciálně běžné, je to, že obsahují velké množství dat, které je často nutné před skutečným čtením dat zefektivnit; jinak je to jen matoucí.

Pokud například čtete některá data uspořádaná v tabulkové formě, chcete nějaké sloupce, jiné nechcete.

Tento požadavek byl hrozný i v minulosti, a proto má projekt GNU úžasný nástroj, který uživatelům pomáhá filtrovat a extrahovat data pro lepší práci. Tím nástrojem je AWK .

Historie

AWK je vlastně programovací jazyk, který se věnuje zpracování textu. Používá se pro extrakci dat ve specifických vzorech. Byl vyvinut v 70. letech v Bellových laboratořích Alfredem Ahom, Peterem Weinbergerem a Brianem Kernighanem (iniciály jejich příjmení daly tomuto jménu vzniknout). Vývoj awk se tím nezastavil. V roce 1985 byla představena nová verze, která přinesla nové změny v příkazu awk, včetně schopnosti zpracovávat více vstupních proudů, počítané regulární výrazy, uživatelsky definované funkce a mnoho dalšího! Stručně řečeno, aktualizace z něj udělala výkonnější programovací jazyk.

Awk má jinou implementaci. Aby bylo zajištěno, že existuje správná implementace, která nabízí standardní přístup, napsal Paul Rubin v roce 1986 gawk. S novějším awk to fungovalo dobře.

Kromě toho, v roce 1989 System V Release, byly přidány nové funkce. Vývojáři také vylepšili jeho temná zákoutí, díky čemuž se lépe používá pro programátory a uživatele. K poslední změně došlo v roce 1997, kdy awk viděl přístup k síti – což uživatelům umožnilo řešit problémy na dálku.

Poslední přepsání bylo provedeno v roce 2011, kdy John Haque přepsal vnitřnosti gawk.

Věci, které můžete dělat s AWK

Nyní by mělo být trochu jasné, čeho je AWK schopen. Jedná se o univerzální skriptovací jazyk, který umožňuje zpracování textu. Pokročilí uživatelé jej mohou také použít pro analýzu a vytváření sestav.

AWK není jako jiné programovací jazyky, protože je řízen daty, spíše než procedurální programovací jazyk. To znamená, že jej můžete efektivně použít k provádění akcí proti zadávání textu. Stručně řečeno, můžete jej použít k transformaci dat, jejich vstupu a také jejich odeslání jako standardního výstupu.

Stručně řečeno, můžete pomocí AWK provádět jednoduché operace, jako je rozdělení každého vstupního řádku do polí, skenování souboru řádek po řádku, provádění akcí na odpovídajících řádcích a tak dále! Příkaz awk je také užitečný pro sestavy ve formátu procedury a transformuje datové soubory. Navíc také získáte přístup k programovacím konstrukcím, jako jsou podmíněné a smyčky, řetězcové a aritmetické operace a formátování výstupních řádků.

Jak funguje awk

V této části se naučíme, jak funguje awk. Je důležité se naučit, že awk má různé implementace. Abychom se ujistili, že jsme na stejné stránce, probereme a použijeme implementaci GNU — která je populárně známá jako gawk. Ve většině případů je gawk symbolicky propojen s interpretem awk.

Abychom tomu dobře porozuměli, musíme nejprve porozumět záznamům a polím.

Je dobře známo, že awk umí zpracovávat textové streamy a datové soubory. Pro zpracování dat je vstup rozdělen do polí a záznamů. Aby se zajistilo, že awk nebude zahlceno, zpracuje se vždy jeden záznam, dokud není dosaženo konce vstupu. Dále jsou záznamy dále rozděleny do jednoduchých oddílů pomocí oddělovače záznamů pomocí znaků. Každý záznam je také oddělen pomocí znaků nového řádku. To znamená, že každý řádek může být označen jako záznam.

Můžete nastavit nový oddělovač záznamů pomocí proměnné RS.

Následuje oddělovač v poli. Jako obvykle má každý záznam pole, která jsou oddělena pomocí oddělovače polí. Oddělovačem polí mohou být mezery, tabulátory, znaky nového řádku a mezery. Každé pole je také odkazováno pomocí symbolu $, zatímco číslo pole začíná 1. To znamená, že první pole může být označeno jako $1, zatímco druhé pole je označeno jako $2. Tímto způsobem lze n-té pole označit jako $nf.

Program awk

Druhým aspektem awk je program awk. Pokud chcete pracovat s awk, musíte napsat program, který nechá příkaz spustit nebo zpracovat text. Program awk nabízí mnoho funkcí pomocí pravidel a uživatelsky definovaných funkcí. Pravidla fungují s dvojicí akcí nebo jedním vzorem a pravidla jsou oddělena středníky nebo novým řádkem.

V případě, že vás to zajímá, program awk bude vypadat níže.

pattern { action }
pattern { action }
....

Stručně řečeno, program awk funguje tak, že porovnává záznamy na základě vzorů. Pokud je vzor nalezen v záznamu, pak jej zpracuje. Pokud ne, pak je spárován celý záznam, aby se zajistilo, že se něco shoduje na základě pravidel.

Příklady příkazů awk

Nyní, když dobře rozumíme příkazu awk a jak funguje, je nyní čas, abychom se podívali na některé příklady příkazů awk.

Pokud jste nikdy předtím nepoužili awk, možná budete chtít vědět, že awk lze použít s níže uvedenými možnostmi:

awk options program file

Možnosti, které můžete použít s awk, zahrnují následující:

  • – soubor f:Používá se k určení souboru, který obsahuje skript awk
  • -F fs:Používá se k určení oddělovače souborů.
  • -v var=value:Používá se k deklaraci proměnné.

Příklad 1:Čtení skriptů AWK

Jedním z nejběžnějších způsobů použití awk je čtení skriptů. Jako uživatel Linuxu můžete vytvořit skript awk pomocí jednoduchých uvozovek.

Chcete-li to provést, musíte do terminálu zadat následující příkaz.

$awk '{print "Welcome to Hello, World -- AWK tutorial"}'

Ve výše uvedeném příkladu se to, co napíšete, vrátí na samotnou obrazovku. Příkaz bude pokračovat ve vykonávání, dokud jej neukončíte stisknutím CTRL + D.

Příklad 2:Použití více příkazů

Dalším běžným použitím awk je použití více příkazů. Jako uživatel možná budete chtít zkombinovat dva příkazy awk do jednoho, abyste dosáhli požadovaného výsledku. V tomto příkladu vypíšeme řetězec a poté nahradíme druhé slovo v řetězci novým vstupem.

$echo "Hello World" | awk '{$2 = "Universe; print $0"}'

Ve výše uvedeném příkladu jsme terminálu nejprve zopakovali „Ahoj, světe“. Dále jsme zřetězili další příkaz awk, kde jsme druhé slovo nahradili výrazem Universe – a nakonec jsme vypsali řetězec, což je Hello Universe.

Příklad 3:Použití proměnné

Proměnné umožňují ukládat informace a přistupovat k nim. Pokud jste dříve používali programovací jazyky, jistě o nich víte. V případě awk jej používáte ke zpracování textových souborů. Pomocí proměnných můžete přistupovat k určitým datovým polím v souboru stejně jako níže.

Za tímto účelem jsme vytvořili nový textový soubor mynewfile, do kterého vložíme několik náhodných, ale krásných řádků.

Dále musíte spustit příkaz, jak je znázorněno níže.

awk '{print $1}' mynewfile

Jak vidíte, výstupem je tato konkrétní proměnná, která zobrazuje toto pole ze souboru. Také byste měli vidět chybu, kterou jsem udělal.

Příklad 4:Předzpracování AWK

Pomocí příkazu awk můžete přidat předběžné zpracování. Chcete-li tak učinit, musíte použít klíčové slovo BEGIN.

Pokud čtete pozorně, vytvořili jsme nový soubor výše. Zkusme použít předzpracování awk k předvedení obsahu souboru.

Příkaz pro něj je uveden níže.

awk 'awk BEGIN {print "The content of the file:"}
> {print $0}' , mynewfile

Výše uvedený příklad obrazovky není správný. Použil jsem „Begin“ místo „BEGIN“, což je důvod, proč nevidíte provedení tiskového příkazu. Nechám to na vás, abyste si to vyzkoušeli a viděli, jak dopadne váš výsledek!

Příklad 5:Čtení skriptu ze souboru

Tenhle je záludný. Zde můžete použít skript awk ke čtení souboru.

Vytvoříme nový skript, který obsahuje následující.

{print $1 "universe starts at " $6"}

Soubor jsme uložili jako nový skript.

Nyní spusťte na terminálu následující příkaz.

$awk -F: -f newscript /etc/passwd

Fascinující, že jo!

Příklad 6:Následné zpracování AWK

Dále se podíváme na post-processing AWK. Funguje to podobně jako předzpracování, ale tentokrát se při následném zpracování používá příkaz END.

$ awk 'BEGIN {print "The file content starts now:"}
>
> {print $0}
>
> END {print "The File ends"}' mynewfile

Příklad 7:Uživatelem definované proměnné

V příkazu awk můžete také použít proměnné bez použití čísla nebo znaku dolaru.

Níže je uveden příklad.

$awk '
BEGIN{
test = "Welcome to FossLinux Awesome Linux Family"
print test
}
'

Příklad 8:Vestavěné funkce

Příkazy awk také přijdou vhod s jejich vestavěnými funkcemi. Můžete například použít matematické funkce a také funkce String.

$ awk 'BEGIN {x - "fossLinux"; print toupper(x)}'
$ awk 'BEGIN {x=exp(35); print x}'

Příklad 9:Formátování tisku

Můžete také naformátovat funkci printf dodávanou s awk. Existuje mnoho modifikátorů, které můžete použít. Například můžete použít c k vytištění jako řetězec; můžete také použít d pro celočíselnou hodnotu a tak dále.

$ awk 'BEGIN {
x = 200 * 200
printf "The result is: %e\n", x
}'

Příklad 10:Strukturované příkazy

Můžete také použít strukturované příkazy jako if, else, while nebo for loop. Podívejme se na níže uvedený příklad příkazu if.

$ awk '{if ($1 > 20) print $2}' mynewfile

Závěr

Tím se dostáváme na konec našeho výukového programu příkazů awk. Tak co, našel se vám užitečný a hodláte ho využívat pro svou práci? Komentář níže a dejte nám vědět.


Linux
  1. Linux Tee Command s příklady

  2. Příkaz linuxové hlavy s příklady

  3. JQ Command v Linuxu s příklady

  1. wc Linux Command s příklady

  2. Linux řazení příkazů s příklady

  3. Echo Command v Linuxu (s příklady)

  1. man Command v Linuxu s příklady

  2. Příkaz AWK v Linuxu s příklady

  3. Curl Command v Linuxu s příklady