Az awk parancs használata Linuxon

Linuxon az awk egy parancssori szövegmanipulációs dinamó, valamint egy erőteljes szkriptnyelv. Az alábbiakban bemutatjuk néhány legmenőbb funkcióját.

Milyen awk kapta a nevét

Az awk parancsot annak a három személynek a kezdőbetűivel nevezték el, akik 1977-ben írták az eredeti verziót: Alfred Aho, Weinberger Péter, és Brian Kernighan. Ez a három férfi a legendás világból származott AT&T Bell Laboratories Unix panteon. Azóta sokak közreműködésével az awk tovább fejlődött.

Ez egy teljes szkriptnyelv, valamint egy teljes szövegszerkesztő eszközkészlet a parancssorhoz. Ha ez a cikk felkelti az étvágyát, megteheti nézzen meg minden részletet az awk-ról és annak funkcióiról.

Szabályok, minták és műveletek

Az awk olyan programokon dolgozik, amelyek mintákból és műveletekből álló szabályokat tartalmaznak. A művelet a mintának megfelelő szövegen hajtódik végre. A minták göndör kapcsos zárójelek ({}) közé vannak zárva. Egy minta és egy cselekvés együtt alkot egy szabályt. A teljes awk program idézőjelek között (‘) van.

  Mi az a „vegyes tartalom”, és miért blokkolja a Chrome?

Vessünk egy pillantást az awk programok legegyszerűbb típusára. Nincs benne minta, így minden bele betáplált szövegsorhoz illeszkedik. Ez azt jelenti, hogy a művelet minden sorban végrehajtódik. Jól használja a kimeneten a ki parancsol.

Íme a standard kimenet, akitől:

who

A

Talán nincs szükségünk erre az összes információra, inkább csak szeretnénk látni a neveket a fiókokban. A who kimenetét átvezethetjük az awk-ba, majd megmondhatjuk az awk-nak, hogy csak az első mezőt írja ki.

Alapértelmezés szerint az awk a mezőt szóközzel, sor elején vagy sor végén lévő karaktersorozatnak tekinti. A mezőket egy dollárjel ($) és egy szám azonosítja. Tehát az $1 az első mezőt jelenti, amelyet a nyomtatási művelettel együtt használunk az első mező kinyomtatására.

  Mi a teendő a telefon ellopása előtt (és után).

A következőket írjuk be:

who | awk '{print $1}'

Az awk kiírja az első mezőt, és eldobja a sor többi részét.

Annyi mezőt nyomtathatunk, amennyit csak akarunk. Ha elválasztóként vesszőt adunk, az awk szóközt ír ki az egyes mezők közé.

A következőt írjuk be, hogy kinyomtassuk a személy bejelentkezésének idejét is (négyes mező):

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

Van néhány speciális mezőazonosító. Ezek a teljes szövegsort és a szövegsor utolsó mezőjét jelentik:

$0: A teljes szövegsort jelöli.
$1: Az első mezőt jelöli.
$2: A második mezőt jelöli.
$7: A hetedik mezőt jelöli.
45 dollár: A 45. mezőt képviseli.
$NF: A „mezők száma” rövidítése, és az utolsó mezőt jelöli.

  Különböző csengőhangok beállítása minden SIM-kártyához Androidon

A következőket írjuk be, hogy előhívjunk egy kis szöveges fájlt, amely a következőhöz rendelt rövid idézetet tartalmaz Dennis Ritchie:

cat dennis_ritchie.txt

A

Azt akarjuk, hogy az awk kinyomtassa az idézet első, második és utolsó mezőjét. Ne feledje, hogy bár a terminálablakban körbe van burkolva, ez csak egyetlen szövegsor.

A következő parancsot írjuk be:

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

Nem ismerjük ezt az „egyszerűséget”. a 18. mező a szövegsorban, és nekünk mindegy. Tudjuk, hogy ez az utolsó mező, és a $NF segítségével megkaphatjuk az értékét. Az időszak csak egy másik karakternek számít a