Útmutató az AWK programozási nyelvhez Linuxon
Bevezetés
Az AWK egy Linux alatti szövegfeldolgozásra használt szkriptnyelv. A szöveges fájlok adatainak kezelésére tervezték, így ideális eszköz az adatelemzési és -kezelési feladatokhoz. A beépített funkciók és operátorok széles skálájával az AWK egyszerű keresést és cserefeladatokat vagy összetett adatátalakításokat tud végrehajtani. Tömör szintaxisa és sokoldalúsága lehetővé teszi a szöveges fájlok egyszerű kezelését. Az AWK egy hatékony eszköz azok számára, akik szöveges fájlokkal dolgoznak Linux környezetben.
Adjunk egy kezdő útmutatót az AWK programozási nyelvhez Linuxon. Kitérünk a nyelv alapvető szintaxisára, az AWK használatával végrehajtható különböző típusú műveletekre, valamint az AWK használatával szöveges fájlok feldolgozására. Minden egyes lefedett művelethez kódpéldákat és kimeneteket is biztosítunk.
Az AWK telepítése Linux operációs rendszerbe
A telepítés egyik módja a Linux disztribúciónk által biztosított csomagkezelő használata. Itt van a telepítési parancs −
$ sudo apt-get install gawk
A telepítés után ellenőrizhetjük az AWK verzióját Linuxban −
$ awk --version
Ha az AWK telepítve van, a parancs megjeleníti a verziószámot.
Változók az AWK programozási nyelvben
Az AWK számos beépített változót biztosít, amelyek felhasználhatók mintákban és műveletekben. A leggyakrabban használt változók a −
NR – az aktuális rekord (sor) száma
NF – a beviteli rekord mezőinek teljes számát jelöli.
$0 – A teljes aktuális rekord.
$1, $2, $3, … − Az első, második, harmadik, … mező az aktuális rekordban.
Ezeken a beépített változókon kívül az AWK lehetővé teszi a felhasználó által definiált változókat is. A felhasználó által definiált változókhoz az=operátorral lehet értékeket rendelni.
AWK parancssori opciók
Az AWK-t általában a parancssorból hívják meg az awk paranccsal, amely különféle beállításokat és argumentumokat fogad el. Itt található a gyakran használt opciók listája −
-F − a bemeneti fájlok mezőelválasztóját adja meg.
-v − Beállít egy változó értéket.
-f − a végrehajtandó AWK szkriptfájlt adja meg.
-
-n − letiltja a sorok automatikus nyomtatását.
-W – engedélyezi a figyelmeztetéseket.
Mezők kibontása fájlból AWK használatával
Tegyük fel, hogy van egy „filename.csv” CSV-fájlunk a következő formátumban –
name, age, gender
Papan, 22, Male
Priya, 27, Female
Az életkor és nem mezők kibontásához a következő parancsot használhatjuk -
$ awk -F, '{ print $2, $3 }' filename.csv
Ez az AWK-kód kinyomtatja a „filename.csv” nevű CSV-fájl második és harmadik mezőjét (oszlopát), az elválasztójel vessző („,”).
Íme a magyarázat −
'awk' – Az AWK-szkript futtatására használt parancs
'-F, – Ez az opció a mezőelválasztót vesszőre állítja. Ez arra utasítja az AWK-t, hogy a CSV-fájlt vesszőként kezelje a mezők között.
“ ' { print $2, $3 }' ” − Ez maga az AWK szkript. Azt mondja az AWK-nak, hogy a fájl minden sorának második és harmadik mezőjét szóközzel elválasztva nyomtatja ki.
age gender
22 Male
27 Female
Ez a parancs a mezőelválasztót vesszőre (-F,) állítja, és kiírja a második és harmadik mezőt ($2, $3) a fájl minden sorához.
Adatok szűrése AWK paranccsal
Van egy "data.txt" nevű fájlunk, amely információkat tartalmaz a tanulókról, például nevüket, életkorukat és évfolyamukat. Csak azokat a tanulókat szeretnénk kiszűrni, akiknek "A" osztályzatuk van.
Példa
Helyezze az alábbi tartalmat a "data.txt" fájlba −
John, 18, A
Sara, 19, B
Mike, 20, A
Lisa, 18, C
Tom, 19, A
Az "A" osztályzattal rendelkező tanulók kiszűrésére a következő AWK parancsot használhatjuk −
$ awk '$3=="A" {print}' data.txt
Kimenet
John, 18, A
Mike, 20, A
Tom, 19, A
Amint látjuk, csak azok a sorok kerültek kinyomtatásra, amelyeknek „A” osztályzata van.
Példa
Az AWK parancs if utasítását is használhatjuk bonyolultabb szűrések végrehajtására. Például, ha csak a 18 évnél idősebb és "A" osztályzattal rendelkező tanulókat akarjuk kiszűrni, akkor a következő AWK parancsot használhatjuk:
$ awk '$2>18 && $3=="A" {print}' data.txt
Kimenet
Mike, 20, A
Tom, 19, A
Amint látjuk, csak azok a sorok kerültek kinyomtatásra, amelyek mindkét feltételnek megfelelnek.
Megvalósítás a ciklusokhoz AWK paranccsal
3 hurok van -
miközben Loop
do-while Loop
a Loop számára
Itt csak a „for loop”-t valósítjuk meg.
Először készítsen egy „input.txt” fájlt, és helyezze el az alábbi tartalmat -
Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35
Most pedig nézzük meg, hogyan használhatjuk az AWK-ban lévő ciklusokat a fájlban lévő adatok feldolgozásához.
Hozzon létre egy másik fájlnevet: „program.awk”
A következő AWK program egy for ciklust használ a fájl minden sorának kinyomtatására −
{
for (i = 1; i <= NF; i++) {
printf("%s ", $i);
}
printf("
");
}
Ebben a programban a minta üres, ami azt jelenti, hogy a művelet a fájl minden sorára vonatkozik. A művelet egy for ciklusból áll, amely a sor minden mezője (oszlopa) felett iterál az NF (mezők száma) változó használatával. A cikluson belül a printf függvény minden mezőt kinyomtat, majd szóköz következik. A ciklus után ismét a printf függvényt használjuk újsor karakter nyomtatására.
A program futtatásához a következő parancsot használhatjuk -
$ awk -F, -f program.awk input.txt
Ahol a „program.awk” az AWK program fájlneve, a „-F” pedig azt adja meg, hogy a mezőelválasztó vessző.
Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35
Láthatjuk, hogy kiírja az összes sort az „input.txt” fájlból.
Következtetés
Ez a cikk bemutatja az AWK programozási nyelvet Linuxon, gyakorlati kódpéldákat és a hozzájuk tartozó kimeneteket kínálva. Az AWK egy rendkívül hatékony eszköz a szöveges adatok feldolgozására és a releváns információk kinyerésére. Az útmutató lefedi az AWK alapvető programozási koncepcióit, beleértve a ciklusokat is. Ezzel a tudással képesek leszünk saját AWK programjainkat Linuxon létrehozni.