AWK
Főnév
AWK (tsz. AWKs)
- (informatika) Az AWK egy hatékony szövegfeldolgozó nyelv, amelyet elsősorban fájlok és szöveges adatok manipulálására használnak, különösen Unix és Linux környezetben. Az AWK segítségével egyszerűen és gyorsan lehet adatokat elemezni, kiválogatni, rendezni és módosítani, tipikusan strukturált szöveges fájlokban, például CSV-kben vagy oszlopokra rendezett logfájlokban.
Az AWK nyelvet eredetileg Alfred Aho, Peter Weinberger és Brian Kernighan fejlesztette ki a Bell Laboratóriumokban, és a nevét alkotóinak kezdőbetűiről kapta (Aho, Weinberger, Kernighan). Az AWK a mintákhoz kapcsolt akciók nyelvi modelljét használja: a bemeneti szöveg különböző részeire (például sorokra vagy mezőkre) alkalmazhatunk mintákat, és ha egy minta illeszkedik, akkor végrehajtjuk a hozzá kapcsolt akciókat.
AWK főbb jellemzői
- Egyszerűség és hatékonyság:
- Az AWK egyszerű szintaxissal rendelkezik, amely könnyen megtanulható, és hatékonyan használható a mindennapi szövegfeldolgozási feladatokhoz. Különösen hasznos nagy fájlok kezelésére és szűrésére, adatmanipulációra és jelentéskészítésre.
- Automatikus szövegmegjelenés és mezőkezelés:
- Az AWK alapértelmezetten szóközök vagy tabulátorok alapján osztja fel a bemeneti sorokat mezőkre. Minden mező automatikusan elérhető
$1
,$2
, stb. változók használatával, míg az aktuális sor az egészében a$0
változóval érhető el.
- Az AWK alapértelmezetten szóközök vagy tabulátorok alapján osztja fel a bemeneti sorokat mezőkre. Minden mező automatikusan elérhető
- Minta-akció pár modell:
- Az AWK használatakor a szövegfeldolgozás minták (például reguláris kifejezések) és hozzájuk kapcsolt akciók alapján történik. Ha a minta illeszkedik a sorra, akkor az akció végrehajtódik.
- Beépített változók és funkciók:
- Az AWK számos beépített változóval és függvénnyel rendelkezik, amelyekkel például számításokat, string manipulációt vagy logikai műveleteket lehet végezni.
- Függetlenség:
- Az AWK független az adatformátumtól, és képes különböző forrásokból származó adatok kezelésére, beleértve a fájlokat és a parancssori kimeneteket is.
AWK használata – Alapok
Az AWK egy Unix/Linux parancs, amelyet a parancssorban lehet használni. Az AWK kódot háromféleképpen lehet megadni:
Egyszerű parancssorból:
- Az AWK kódot közvetlenül megadhatjuk a parancssorban.
Példa:
awk '{ print $1 }' fájl.txt
Ez a parancs az adott fájl minden sorának első mezőjét fogja kinyomtatni.
Külső szkripttel:
- Az AWK kódot külső fájlban is megadhatjuk, amelyet később betölthetünk az AWK parancshoz.
Beágyazva shell-szkriptekbe:
- Az AWK-t gyakran használják shell-szkriptekben, hogy szövegfájlokat dolgozzanak fel vagy adatokat vonjanak ki más parancsok kimenetéből.
Alapvető AWK struktúra
Az AWK programok alapvetően három részre oszthatók: BEGIN, minta-akció, és END blokkokra.
- BEGIN: Ez a blokk akkor fut le, mielőtt az AWK elkezdi a bemeneti fájl sorainak feldolgozását.
- Minta-akció párok: Az adatok minden egyes sorára ez a blokk alkalmazódik, ha a minta illeszkedik a sorra.
- END: Ez a blokk a fájl feldolgozása után fut le.
Példa egy egyszerű AWK programra:
awk 'BEGIN { print "Field 1, Field 2" } { print $1, $2 } END { print "Done" }' fájl.txt
Ez a program az alábbiakat hajtja végre: - BEGIN blokk: Nyomtat egy fejlécet. - Minta-akció blokk: Minden sor első és második mezőjét kiírja. - END blokk: A végén kinyomtatja a „Done” szót.
Példák AWK használatára
- Egyszerű sorok és mezők feldolgozása
Az alábbi parancs az első és második mezőt nyomtatja ki egy fájlból:
awk '{ print $1, $2 }' fájl.txt
- Mezők szétválasztása más elválasztó karakterrel
Ha a fájl nem szóközzel vagy tabulátorral van elválasztva, például vesszővel elválasztott CSV-fájl esetén, az -F
opcióval állíthatjuk be az elválasztó karaktert.
Például egy CSV fájl esetén:
awk -F "," '{ print $1, $2 }' fájl.csv
Ez a parancs a CSV fájl első és második mezőjét nyomtatja ki.
- Adatsorok szűrése
Az AWK lehetőséget biztosít sorok szűrésére egy minta alapján. Például az alábbi parancs csak azokat a sorokat nyomtatja ki, amelyek a „Linux” szót tartalmazzák:
awk '/Linux/ { print }' fájl.txt
- Számolás és számítások
AWK-ban számtani műveleteket is végezhetünk. Például az alábbi parancs kiszámítja az egyes sorok második és harmadik mezőjének összegét:
awk '{ sum = $2 + $3; print sum }' fájl.txt
- Összesítés és statisztikai adatok
Az AWK gyakran használható összesítésre. Például az alábbi parancs kiszámítja egy fájl második mezőjének összegét:
awk '{ total += $2 } END { print total }' fájl.txt
Ez a program minden sor második mezőjét hozzáadja a total változóhoz, majd a fájl végén kinyomtatja a végeredményt.
Beépített AWK változók
AWK-ban számos beépített változó van, amelyek segítségével további információkat nyerhetünk ki a fájlból vagy módosíthatjuk az adatfeldolgozás módját:
NR
: Az aktuális sor sorszáma.NF
: Az aktuális sor mezőinek száma.FS
: A mezők elválasztó karaktere (alapértelmezett: szóköz).OFS
: Az output mező elválasztó karaktere (alapértelmezett: szóköz).RS
: A sorok elválasztó karaktere (alapértelmezett: újsor karakter).
Példa a sorszámok kiírására:
awk '{ print NR, $0 }' fájl.txt
Ez minden sor előtt kiírja annak sorszámát.
Összetettebb példák
- Oszlopok átlagolása
Az alábbi példa egy fájlban lévő második oszlop átlagát számolja ki:
awk '{ sum += $2 } END { print "Average:", sum/NR }' fájl.txt
Ez a parancs összeadja az összes második oszlopban lévő értéket, majd a sorok számával elosztva kiírja az átlagot.
- Fájlok összehasonlítása
Az AWK képes két fájl összehasonlítására és közös sorok keresésére. Például:
awk 'NR==FNR { a[$1]; next }
$1 in a' fájl1.txt fájl2.txt
Ez a parancs összehasonlítja az első fájl és a második fájl első mezőit, és csak azokat a sorokat írja ki a második fájlból, amelyek első mezője megtalálható az első fájlban.
AWK előnyei
- Hatékony szövegfeldolgozás: Az AWK erőteljes eszköz a nagyméretű szöveges fájlok feldolgozására, különösen ha adatok elemzéséről, szűréséről vagy átalakításáról van szó.
- Beépített támogatás reguláris kifejezésekhez: Az AWK kiválóan kezeli a reguláris kifejezéseket, amelyekkel bonyolult mintákat is felismerhetünk szövegekben.
- Egyszerű és gyors használat: A szintaxis egyszerű, és a legtöbb alapvető szövegfeldolgozási feladat rövid kóddal elvégezhető.
AWK hátrányai
- Komplexitás nagyobb feladatoknál: Nagyon bonyolult szövegfeldolgozási feladatok esetén az AWK kódok nehezen olvashatóvá és kezelhetővé válhatnak.
- Specifikus környezet: Az AWK elsődlegesen Unix és Linux környezetben használatos, bár más platformokon is elérhető, de nem annyira népszerű.
Összegzés
Az AWK egy hatékony és sokoldalú eszköz, amely kiválóan alkalmas szöveges fájlok feldolgozására, különösen ha strukturált adatokkal dolgozunk. A beépített minta-akció modell és a reguláris kifejezések támogatása miatt az AWK gyors és egyszerű megoldást kínál sok gyakori adatfeldolgozási feladatra, mint például a sorok szűrése, mezők manipulálása vagy összesítése.