Jak používat příkaz awk v systému Linux

V Linuxu je awk dynamo pro manipulaci s textem z příkazového řádku a také výkonný skriptovací jazyk. Zde je úvod k některým z jeho nejlepších funkcí.

Jak awk dostal své jméno

Příkaz awk byl pojmenován pomocí iniciál tří lidí, kteří napsali původní verzi v roce 1977: Alfred Aho, Petr Weinberger, a Brian Kernighan. Tito tři muži byli z legendární AT&T Bellovy laboratoře Unixový panteon. S přispěním mnoha dalších od té doby se awk nadále vyvíjel.

Je to úplný skriptovací jazyk a také kompletní sada nástrojů pro manipulaci s textem pro příkazový řádek. Pokud vám tento článek vzbudí chuť k jídlu, můžete prohlédněte si každý detail o awk a jeho funkčnosti.

  Jak spárovat a používat zařízení Bluetooth v systému Linux

Pravidla, vzory a akce

awk funguje na programech, které obsahují pravidla složená ze vzorů a akcí. Akce se provede s textem, který odpovídá vzoru. Vzory jsou uzavřeny ve složených závorkách ({}). Vzor a akce tvoří dohromady pravidlo. Celý program awk je uzavřen v jednoduchých uvozovkách (‚).

Pojďme se podívat na nejjednodušší typ programu awk. Nemá žádný vzor, ​​takže odpovídá každému řádku textu, který je do něj vložen. To znamená, že akce se provede na každém řádku. Studna použijte jej na výstupu z kdo velí.

Zde je standardní výstup od koho:

who

The

Možná nepotřebujeme všechny tyto informace, ale spíše chceme vidět jména na účtech. Můžeme převést výstup z who do awk a pak říct awk, aby vytiskl pouze první pole.

  Jak nastavit server uTorrent v systému Linux

Ve výchozím nastavení awk považuje pole za řetězec znaků ohraničený mezerami, začátek řádku nebo konec řádku. Pole jsou označena znakem dolaru ($) a číslem. Takže $1 představuje první pole, které použijeme s akcí tisku k vytištění prvního pole.

Zadáme následující:

who | awk '{print $1}'

awk vytiskne první pole a zahodí zbytek řádku.

Můžeme vytisknout tolik polí, kolik chceme. Pokud přidáme čárku jako oddělovač, awk vytiskne mezeru mezi každým polem.

Zadáme následující, aby se také vytiskl čas přihlášení osoby (pole čtyři):

who | awk '{print $1,$4}'

Existuje několik speciálních identifikátorů pole. Ty představují celý řádek textu a poslední pole v řádku textu:

$0: Představuje celý řádek textu.
$1: Představuje první pole.
$2: Představuje druhé pole.
$7: Představuje sedmé pole.
$45: Představuje 45. pole.
$NF: Znamená „počet polí“ a představuje poslední pole.

  Jak spravovat skrýše Encfs v systému Linux

Napíšeme následující, abychom vyvolali malý textový soubor, který obsahuje krátký citát Dennis Ritchie:

cat dennis_ritchie.txt

The

Chceme, aby awk vytiskl první, druhé a poslední pole nabídky. Všimněte si, že ačkoli je to zalomené v okně terminálu, je to jen jeden řádek textu.

Zadáme následující příkaz:

awk '{print $1,$2,$NF}' dennis_ritchie.txt

Tu „jednoduchost“ neznáme. je 18. pole v řádku textu a je nám to jedno. Co víme je, že je to poslední pole a můžeme použít $NF k získání jeho hodnoty. Období je prostě považováno za další postavu v