ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Awk - Wikipédia

Awk

A Wikipédiából, a szabad enciklopédiából.

A szócikk címe technikai okok miatt pontatlan. A helyes cím: awk.

Az awk egy általános célú programozási nyelv, amelyet szöveges állományok földolgozására terveztek. Elnevezése a megalkotói – Alfred Aho, Peter Weinberger és Brian Kernighan – családnevének kezdőiből született. A UNIX 3 verziójában jelent meg. Ideális szöveges állományok szűrésére, átformálására, kiértékelésére. Ma is minden unix rendszeren van legalább egy awk változat. A Free Software Foundation a gawk nevű változatot gondozza. A linux disztribúciókkal jellemzően a gawk implementációt szállítják. Windows rendszerekhez is letölthető a gawk például a Cygwin részeként.

Az awk kizárólag karaktersorozatokkal, másszóval stringekkel foglalkozik, a számábrázolásra is ezeket használja. Emellett ismeri az asszociatív tömböket is (példa: a["kutya"], a["macska"]), melyeket hash-nak is neveznek. Ezek például szótárszerű alkalmazásoknál nyújtanak kitűnő segítséget. A szabályos kifejezések (idegen szóval regular expressions) szintén a nyelv részei.

Az awk nyelv ereje, rövidsége, de az awk szkriptek határainak felismerése adta Larry Wallnak az ötletet a Perl nyelv kifejlesztésére.

Tartalomjegyzék

[szerkesztés] Egy awk program felépítése

Egy tipikus awk program a végrehajtása során a bemeneti adatokat egy másféle kimenetté formálja át.

A programok általában mintából és a mintához tartozó parancsokból állnak:

  • /1. minta / { parancs(ok) }
  • /2. minta / { parancs(ok) }

Az awk soronként olvassa a bemenetet. Minden beolvasott sort összehasonlít a mintákkal, és ha illeszkedést talál, a parancsokat végrehajtja. A mintákat a szabályos kifejezések szabályai szerint értelmezi.

A különleges parancsformák:

BEGIN { parancs(ok) }
adatbeolvasás előtt ezeket a parancsokat végrehajtja
END { parancs(ok) }
adatbeolvasás és a többi parancs végrehajtása után ezeket a parancsokat végrehajtja
/minta/
ha nincs külön parancs megadva, a mintának megfelelő sort kinyomtatja
{ akció }
ha nincs minta megadva, a parancsokat végrehajtja minden sorra egymás után

[szerkesztés] Változók

Lehetséges a változók használata. A programozó maga is definiálhat változókat, de vannak előre megadott változók, nevezetesen:

$0 
a feldolgozás alatt álló egész sor
$1, $2, ...$n 
a sor egyes, egymástól szóközzel elválasztott részei.

Ez az automatikus felbontás nagyon egyszerűvé és hatékonnyá teszi az sorok feldolgozását.

[szerkesztés] Awk parancsok

Az awk nyelv szintaxisa hasonlít a C nyelvéhez, ami nem csoda, hiszen az awk nyelv egyik szerzője, Brian W. Kernighan a C nyelv megalkotója. Elemi parancsok a változóknak való értékadás, a változók összehasonlítása, az elágazás (if...else) és a ciklus (for, while). Emellett belső függvényeket, illetve saját implementálású függvényeket is meg lehet hívni. Egy egyszerű függvénydefiníció lehet például a következő:

function add_three (number, temp) {
  temp = number + 3
  return temp
}

Egy így definiált függvény az alábbi szintaxissal hívható meg. Ennek a parancsnak a hatására 39 íródik a kimenetre:

print add_three(36)

Az adatokat a "print" paranccsal lehet kinyomtatni, azaz a kimenetre írni. Például egy sor második mezőjét a

 print $2

paranccsal nyomtatjuk/írhatjuk ki a szabványos kimenetre.

[szerkesztés] Példák

[szerkesztés] Helló, világ!

A „Helló, világ!” program awk-ban a következőképpen implementálható:

BEGIN { print "Helló, világ!" }

[szerkesztés] Adott karakterszámnál hosszabb sorok kiíratása

A következő programmal a 80 karakternél hosszabb sorokat írja ki. Vegyük észre, hogy az alapértelmezett akció a sor kiírása:

length > 80

[szerkesztés] Sorok, szavak és karakterek megszámlálása

Az alábbi awk program megszámolja majd kiírja a bemeneti fájlban lévő sorok, szavak és karakterek számát úgy, mint a wc nevű program:

{
    w += NF
    c += length + 1
}
END { print NR, w, c }

[szerkesztés] Szavak előfordulási gyakoriságának kiszámítása

Szavak gyakoriságáról készít statisztikát asszociatív tömb felhasználásával a következő példa:

BEGIN { FS="[^a-zA-Z]+"} 

{ for (i=1; i<=NF; i++)
     words[tolower($i)]++
}

END { for (i in words)
    print i, words[i]
}

[szerkesztés] Irodalom

  • Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger: Az AWK Programozási nyelv. Addison-Wesley, 1988, ISBN 0 201 07981 X

[szerkesztés] Külső kapcsolatok


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -