Ez a fejezet leírja, hogy több hasznos AWK parancsokat a megfelelő példa. Vegyünk egy szöveges fájl jelek.a következő tartalommal feldolgozandó txt –
1) Amit Physics 802) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89
nyomtatási oszlop vagy mező
utasíthatja az AWK-t, hogy csak bizonyos oszlopokat nyomtasson a beviteli mezőből., A következő példa ezt mutatja −
példa
$ awk '{print $3 "\t" $4}' marks.txt
a kód végrehajtásakor a következő eredményt kapja −
kimenet
Physics 80Maths 90Biology 87English 85History 89
a fájljelekben.txt, a harmadik oszlop tartalmazza a tárgy nevét, a negyedik oszlop pedig az adott témában kapott jeleket tartalmazza. Nyomtassuk ki ezt a két oszlopot az AWK print paranccsal. A fenti példában a $3 és $ 4 képviseli a harmadik, illetve a negyedik mezőt a bemeneti rekordból.
minden sor nyomtatása
alapértelmezés szerint az AWK kinyomtatja a mintának megfelelő összes sort.,
Példa
$ awk '/a/ {print $0}' marks.txt
A végrehajtó ezt a kódot, akkor a következő eredményt −
Kimenet
2) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89
a fenti példában a keresés űrlap minta egy. Ha egy minta egyezik sikerül, akkor végrehajt egy parancsot a test blokk. Body block hiányában-alapértelmezett műveletet hajtanak végre, amely kinyomtatja a rekordot. Ezért a következő parancs ugyanazt az eredményt hozza −
példa
$ awk '/a/' marks.txt
oszlopok nyomtatása minta szerint
Ha egy mintaegyezés sikeres, az AWK alapértelmezés szerint kinyomtatja a teljes rekordot., De utasíthatja az AWK-t, hogy csak bizonyos mezőket nyomtasson. Például a következő példa kiírja a harmadik és a negyedik mezőt, amikor egy mintaegyezés sikeres.
példa
$ awk '/a/ {print $3 "\t" $4}' marks.txt
a kód végrehajtásakor a következő eredményt kapja −
kimenet
Maths 90Biology 87English 85History 89
nyomtatási oszlop bármilyen sorrendben
oszlopokat bármilyen sorrendben kinyomtathat. Például a következő példa kinyomtatja a negyedik oszlopot, majd a harmadik oszlopot.,
Példa
$ awk '/a/ {print $4 "\t" $3}' marks.txt
A végrehajtó a fenti kódot, akkor a következő eredményt −
Kimenet
90 Maths87 Biology85 English89 History
Számolás, meg a Nyomtatás Illeszkedik a Minta
nézzük egy példát, ahol lehet számolni, majd nyomtassa ki a sorok száma, amelyek egy minta egyezik sikerült.
példa
$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt
a kód végrehajtásakor a következő eredményt kapja −
kimenet
Count = 4
ebben a példában növeljük a számláló értékét, ha egy mintaegyezés sikeres, és ezt az értéket a VÉGBLOKKBA nyomtatjuk., Ne feledje, hogy a többi programozási nyelvtől eltérően nem kell egy változót deklarálni annak használata előtt.
nyomtatási vonalak több mint 18 karakterrel
csak azokat a sorokat nyomtassuk ki, amelyek több mint 18 karaktert tartalmaznak.
példa
$ awk 'length($0) > 18' marks.txt
a kód végrehajtásakor a következő eredményt kapja −
kimenet
3) Shyam Biology 874) Kedar English 85
AWK egy beépített hosszú függvényt biztosít, amely visszaadja a karakterlánc hosszát. A $0 változó a teljes sort tárolja, testblokk hiányában az alapértelmezett művelet történik, azaz a nyomtatási művelet., Ezért, ha egy sornak több mint 18 karaktere van, akkor az összehasonlítási eredmények igazak, a sor pedig kinyomtatásra kerül.