Az awk parancs hatékony módszer a szövegfájlok feldolgozásához vagy elemzéséhez - különösen a sorok (sorok) és oszlopok által rendezett adatfájlokhoz.
Egyszerű awk parancsok futtathatók a parancssorból. A bonyolultabb feladatokat awk programoknak (ún. Awk szkripteknek) kell írni egy fájlhoz.
Az awk parancs alapformátuma így néz ki:
awk 'minta {action}' input-file> kimeneti fájl
Ez azt jelenti, hogy a bemeneti fájl minden vonalát vegye be; ha a vonal a mintát tartalmazza, alkalmazza a műveletet a sorra, és írja le a kimenő sort a kimeneti fájlra. Ha a mintát elhagyja, akkor a műveletet minden sorra alkalmazni kell. Például: awk '{print $ 5}' table1.txt> output1.txt Ez az állítás az egyes sorok 5. oszlopának elemét veszi fel, és a kimenet "output.txt" kimeneti fájljában egy sorként írja. A "$ 4" változó a második oszlopra utal. Hasonlóképpen elérheti az első, a második és a harmadik oszlopot is: $ 1, $ 2, $ 3 stb. Alapértelmezés szerint az oszlopok szóközzel vagy lapokkal (úgynevezett fehér hely) vannak elválasztva. Tehát, ha a "table1.txt" bemeneti fájl tartalmazza ezeket a sorokat: 1, Justin Timberlake, 545 cím, ár 7,30 dollár2, Taylor Swift, 723 cím, ár 7,90 dollár3, Mick Jagger, 610 cím, ár 7,90 dollár4, Lady Gaga, cím 118, ár 7,30 $5, Johnny Cash, cím 482, ár 6,50 $6, Elvis Presley, 335 cím, ár 7,30 dollár7, John Lennon, cím 271, ár 7,90 dollár8, Michael Jackson, 373 cím, ár 5,50 dollár Ezután a parancs írja a következő sorokat a "output1.txt" kimeneti fájlhoz: 545,723,610,118,482,335,271,373, Ha az oszlop leválasztó nem más, mint szóközök vagy lapok, például vessző, megadhatja, hogy az awk utasításban az alábbiak szerint: awk -F, '{print $ 3}' table1.txt> output1.txt Ez kiválasztja az elemeket az egyes sorok 3. oszlopából, ha az oszlopokat vesszővel elválasztjuk. Ezért a kimenet, ebben az esetben: 545. cím 723. cím 610. cím 118. cím 482. cím 335. cím Cím 271 373. cím A göndör zárójelben ("{", "}") szereplő mondatok listáját blokknak nevezik. Ha feltételes kifejezést helyez el egy mondat előtt, akkor a blokk belsejében lévő utasítás csak akkor lesz végrehajtva, ha a feltétel igaz. awk '$ 7 == " $ 7.30" {print $ 3} "table1.txt Ebben az esetben a feltétel $ 7 == " $ 7.30", ami azt jelenti, hogy a 7. oszlopban szereplő elem egyenlő 7,30 dollárral. A dollárjel előtt álló backslash arra szolgál, hogy megakadályozza, hogy a rendszer a változóként értelmezze a 7 dollárt, és szó szerint vegye a dollár jelét. Tehát ez az awk utasítás kinyomtatja az elemet minden sor 3. oszlopában, amelynek "7.30 $" van a 7. oszlopban. Szabályos kifejezéseket is használhat feltételként. Például: awk '/ 30 / {print $ 3}' táblázat1.txt A két sáv ('/') közötti string a szabályos kifejezés. Ebben az esetben csak a "30." Ez azt jelenti, hogy ha egy sor tartalmazza a "30" karakterláncot, akkor a rendszer kiírja az elemet a sor 3. oszlopában. A fenti példa kimenete: Timberlake, Gaga Presley, Ha az asztalelemek az awk számok, számításokat végezhetnek rájuk, mint ez a példa: awk '{print ($ 2 * $ 3) + $ 7}' Az aktuális sor ($ 1, $ 2 stb.) Hozzáférési elemei mellett a $ 0 változó, amely a teljes sorra (vonalra) és az NF változóra vonatkozik, amely a mezők számához igazodik. Új változókat is definiálhat, mint ebben a példában: awk '{sum = 0; a (col = 1, col <= NF, col ++) összege + = $ col; nyomtatási összeg; }” Ez kiszámolja és kinyomtatja az egyes sorok összes elemének összegét. Az Awk utasításokat gyakran a sed parancsokkal kombinálják.