Név
gawk - minta letapogatás és feldolgozási nyelv
Szinopszis
mamlasz POSIX vagy GNU stílusú beállítások -f programfile -- fájl …mamlasz POSIX vagy GNU stílusú opciók -- programban szöveges fájl … pgawk POSIX vagy GNU stílusú beállítások -f programfile -- fájl …pgawk POSIX vagy GNU stílusú opciók -- programban szöveges fájl … gawk a GNU Project az AWK programozási nyelvének megvalósítása. Megfelel a POSIX 1003.2 Command Language és Utilities szabvány nyelvének meghatározására. Ez a verzió a leírásban található Az AWK programozási nyelv , az Aho, a Kernighan és a Weinberger, a System V Release 4 változatának UNIX awk . gawk szintén újabb Bell Laboratóriumok nyújtanak awk bővítményeket és számos GNU-specifikus kiterjesztést. Pgawk a mamlasz . Minden módon megegyezik mamlasz , kivéve, hogy a programok lassabban futnak, és automatikusan létrehoz egy végrehajtási profilt a fájlban awkprof.out amikor kész. Lásd a --profil lehetőség alatt. A parancssor a következő opciókat tartalmazza: mamlasz maga az AWK program szövege (ha nem a -f vagy --file opciók), valamint a ARGC és ARGV előre meghatározott AWK változók. gawk opciók lehetnek hagyományos POSIX one letter opciók vagy GNU stílusú hosszú opciók. A POSIX opciók egyetlen `` - '' állományból indulnak, míg a hosszú opciók a `` - '' gombbal kezdődnek. Hosszú lehetőségek állnak rendelkezésre mind a GNU-specifikus funkciók, mind a POSIX által megbízott szolgáltatások számára. A POSIX szabványt követve, mamlasz -specifikus opciók érkeznek érveken keresztül -W választási lehetőség. Többszörös -W lehetőségeket lehet adni -W opciónak megfelelő hosszú opció van, az alábbiakban részletezett módon. A hosszú opciók argumentumait vagy egy opcióval egyesítjük = jelet, nincs beavatkozó szóköz, vagy a következő parancssori argumentumban megadhatók. A hosszú opciók rövidíthetők, mindaddig, amíg a rövidítés egyedülálló marad. gawk elfogadja a következő opciókat, betűrendben felsorolva. -F fs --field-elválasztó fs Használat fs a beviteli mező szétválasztásához (a FS előre definiált változó). -v var = val --hozzárendelni var = val Adja meg az értéket val a változóhoz var , mielőtt a program végrehajtása megkezdődik. Az ilyen változó értékek a KEZDŐDIK AWK program blokkja. -f programfile --file programfile Olvassa el az AWK programforrást a fájlból programfile , az első parancssori argumentum helyett. Többszörös -f (vagy --file) opciókat lehet használni. -mf NNN -úr NNN Állítson különböző memóriahatárokat az értékre NNN . A f zászló állítja be a maximális számú mezőt, és a r zászló állítja be a maximális rekordméretet. Ez a két zászló és a -m lehetőség a UNIX Bell Laboratories kutatási verziójából származik awk . Őket figyelmen kívül hagyják mamlasz , mivel mamlasz nincs előre meghatározott határai. -W kompat -W hagyományos --compat --hagyományos Befut kompatibilitás mód. Kompatibilitási módban, mamlasz azonos módon viselkedik a UNIX rendszerrel awk ; a GNU-specifikus kiterjesztések egyikét sem ismerik fel. A … haszna --hagyományos előnyben részesítendő az opció többi formájánál. Lát GNU EXTENSIONS, alább, további információkért. -W copyleft -W szerzői jog --copyleft --szerzői jog Nyomtassa ki a GNU szerzői jogi információ rövid verzióját a szabványos kimeneten és hagyja el a sikeres kimenetet. -W dump-változók= fájl --dump-változók= fájl A globális változók, azok típusainak és végső értékeinek rendezett listájának kinyomtatása fájl . Ha nem fájl biztosított, mamlasz egy nevű fájlt használ awkvars.out az aktuális könyvtárban. Az összes globális változó listája jó módja annak, hogy nyomdai hibákat keressen a programokban. Ezt az opciót is használni fogod, ha nagy programod van, és sok funkcióval rendelkezik, és biztos akar lenni abban, hogy a funkciók nem véletlenül olyan globális változókat használnak, amelyeket helyinek neveztek. (Ez egy különösen egyszerű hiba az egyszerű változó nevekkel, mint például én, j, stb.) -W segítséget -W használat --Segítség --használat Nyomtassa ki a rendelkezésre álló opciók viszonylag rövid összefoglalását a szabványos kimeneten. (Per GNU kódolási szabványok , ezek a lehetőségek azonnali, sikeres kilépést okoznak.) -W lint= halálos --lint meg= halálos Adjon figyelmeztetéseket a kétszeres vagy nem hordozható konstrukciókra az egyéb AWK implementációkhoz. Opcionális argumentummal halálos, a szöszi figyelmeztetések végzetes hibák. Ez drasztikus lehet, de használata biztosan ösztönözni fogja a tisztább AWK-programok kidolgozását. -W szőrös --lint meg régi Adjon figyelmeztetéseket olyan konstrukciókra, amelyek nem hordozhatók a Unix eredeti verziójához awk . -W gen-po --gen-po Szkennelje és értelmezze az AWK programot, és generáljon egy GNU-t .po formátumú fájlt a szabványos kimeneten, és a program összes lokalizálható karakterláncára vonatkozó bejegyzéseket. A program nem kerül végrehajtásra. Lásd a GNU-t gettext a további információkért .po fájlokat. -W nem tizedes adat --non tizedesjegynél adatok Az oktális és a hexadecimális értékek felismerése a bemeneti adatokban. Használja ezt az opciót óvatosan! -W posix --posix Ez bekapcsol kompatibilitás módban, a következő további korlátozásokkal: * x a menekülési szekvenciákat nem ismeri fel. * Csak a tér és a lap működik terepi elválasztóként, amikor FS egyetlen helyre van beállítva, az újsor nem. * Nem tudod folytatni a sorokat ? és :. * A szinonimája func a kulcsszóhoz funkció nem ismeri fel. * Az üzemeltetők ** és **= nem használható ahelyett, hogy ^ és ^=. * A fflush () funkció nem áll rendelkezésre. -W profil= prof_file --profil= prof_file Profiladatok küldése prof_file . Az alapértelmezett awkprof.out. Amikor fut mamlasz , a profil csak egy "szép nyomtatott" verzió a programban. Amikor fut pgawk , a profil tartalmazza a program minden egyes utasításának végrehajtási számát a bal margóban és a függvényhívások számát minden egyes felhasználó által definiált függvény számára. -W újraintervallum --re-intervallum Engedélyezze a intervallum kifejezések szabályos kifejezésegyezéssel (ld Rendszeres kifejezések, lent). Az intervallum kifejezései hagyományosan nem álltak rendelkezésre az AWK nyelvben. A POSIX szabvány hozzáfűzte őket awk és egrep összhangban vannak egymással. Azonban használatuk valószínűleg megtöri a régi AWK programokat, tehát mamlasz csak akkor biztosítja őket, ha ezt a lehetőséget választják, vagy amikor --posix meg van adva. -W forrás programban szöveges --forrás programban szöveges Használat programban szöveges mint az AWK program forráskódja. Ez az opció lehetővé teszi a könyvtári funkciók könnyű összekeverését (a -f és --file opciók) a parancssorba beírt forráskóddal. Ez elsősorban közepes és nagy méretű AWK programokra vonatkozik, amelyeket a shell scriptekben használnak. -W változat --változat Nyomtasson verzióadatokat az adott példányra vonatkozóan mamlasz a szabvány kimeneten. Ez elsősorban annak tudatosítására szolgál, hogy a mamlasz a rendszered naprakész, függetlenül attól, amit a Free Software Foundation terjeszt. Ez a hibák bejelentésekor is hasznos. (Per GNU kódolási szabványok , ezek a lehetőségek azonnali, sikeres kilépést okoznak.) -- Jelölje meg a lehetőségek végét. Ez azért hasznos, hogy további érveket adjon az AWK programnak, hogy "- -" -al kezdjen. Ez főként a legtöbb POSIX program által használt érveléselemző egyezménnyel összhangban áll. Kompatibilitási módban minden egyéb opció érvénytelen, de egyébként figyelmen kívül marad. Normál működés közben mindaddig, amíg a program szövegét megadta, ismeretlen opciókat továbbítanak az AWK programba a ARGV tömb feldolgozásra. Ez különösen hasznos az AWK programok futtatásához a `` #! '' Futtatható értelmező mechanizmuson keresztül. AWK PROGRAM EXECUTION Az AWK program a minta-cselekvési utasítások és az opcionális függvénydefiníciók sorozatából áll. minta { cselekvési nyilatkozatok }funkció név ( paraméterlista ) { nyilatkozatok }
gawk először elolvassa a program forrását a programfile (ok), ha meg van adva, argumentumoktól kezdve --forrás, vagy a parancssor első nem opcionális argumentumából. A -f és --forrás a parancssor többször is használható a parancssorban. gawk a program szövegét úgy olvassa, mintha az összes programfile s és a parancssori forrásszövegeket összefogták egymással. Ez hasznos az AWK funkciók könyvtárainak felépítéséhez, anélkül, hogy azokat minden új AWK programba be kellene építenie, amely ezeket használja. Ezenkívül lehetővé teszi a könyvtári funkciók és a parancssori programok összekeverését. A környezeti változó AWKPATH meghatározza a keresési útvonalat, ha a -f választási lehetőség. Ha ez a változó nem létezik, az alapértelmezett elérési út": / Usr / local / share / awk". (A tényleges könyvtár változhat attól függően, hogy hogyan mamlasz építették és telepítették.) Ha a -f opció tartalmaz egy `` / '' karaktert, nincs útvonal keresés. gawk az AWK programokat a következő sorrendben hajtja végre. Először is, a -v lehetőség van. Következő, mamlasz összeállítja a programot belső formába. Azután, mamlasz végrehajtja a kódot a KEZDŐDIK blokk (ok) (ha van ilyen), majd folytatja a ARGV sor. Ha a parancssorban nincsenek megnevezések, mamlasz elolvassa a standard bemenetet. Ha a parancssoron található fájlnévnek van az űrlapja var = val változó hozzárendelésként kezelik. A változó var lesz hozzárendelve az értékhez val . (Ez történik bármelyik után KEZDŐDIK A parancssor változó hozzárendelése leginkább hasznos az értékek dinamikus hozzárendeléséhez az AWK-változókhoz, amelyekkel szabályozható, hogy a bevitelt mezőkre és rekordokra osztják. Hasznos az állapotszabályozáshoz is, ha több adatfolyam szükséges egy adatfájl fölött. Ha a ARGV üres (''), mamlasz ugrik át rajta. A bemenet minden rekordjára vonatkozóan, mamlasz tesztek, hogy megegyezik-e valamivel minta az AWK programban. Minden olyan minta, amelyen a rekord egyezik, a hozzá tartozó akció végrehajtásra kerül. A mintákat a sorrendben tesztelik a programban. Végül, miután az összes bemenet kimerült, mamlasz végrehajtja a kódot a VÉGE blokk (ok) (ha vannak). Az AWK változók dinamikusak; amikor először használják őket. Értékeik lebegőpontos számok vagy karakterláncok, vagy mindkettő, attól függően, hogy hogyan használják őket. Az AWK egydimenziós tömböket is tartalmaz; többdimenziós tömbök szimulálhatók. Számos előre definiált változó van programozva; ezeket szükség szerint írják le és az alábbiakban összefoglalják. Általában a rekordokat új sor karakterek választják el. Meghatározhatja, hogy a rekordok elválaszthatók legyenek az értékek hozzárendelése a beépített változóhoz RS. Ha RS minden egyes karakter, a karakter elválasztja a rekordokat. Másképp, RS rendszeres kifejezés. A beviteli szöveg, amely megfelel ennek a szabályos kifejezésnek, elválasztja a rekordot. Kompatibilitási módban azonban csak a karakterlánc első karakterét használják a rekordok elválasztására. Ha RS a null karakterláncra van állítva, majd a rekordokat üres sorok választják el. Amikor RS a null karakterláncra van állítva, az újsoros karakter minden tekintetben térbeli elválasztóként működik FS lehet. Mivel minden bemeneti adat olvasható, mamlasz feldarabolja a rekordot mezők , felhasználva a FS mint mezőszétválasztó. Ha FS egy karakter, a mezőket a karakter választja el. Ha FS az null karakterlánc, akkor minden egyes karakter egy külön mező lesz. Másképp, FS várhatóan teljes szabályos kifejezés. Különleges esetekben FS egy szóköz, a mezőket terek és / vagy lapok és / vagy új sorok futják egymástól. (De lásd a vita --posix, lent). JEGYZET: Az értéke IGNORECASE (lásd alább) szintén befolyásolja, hogy a mezők mikor oszlanak meg FS rendszeres kifejezés, és mikor vannak felosztva a rekordok RS rendszeres kifejezés. Ha a FIELDWIDTHS a változó a számok szétválasztott listájára van állítva, minden mező várhatóan fix szélességű lesz, és mamlasz a rekordot a megadott szélességek alapján osztja fel. Az értéke FS figyelmen kívül hagyják. Új érték hozzárendelése a következőhöz: FS felülírja a FIELDWIDTHS, és visszaállítja az alapértelmezett viselkedést. A bemeneti rekord minden mezőjét hivatkozhat a pozíciója, $1, $2, stb. $0 az egész rekord. A mezőket nem kell hivatkozni a konstansokkal: n = 5print $ n kinyomtatja az ötödik mezőt a bemeneti rekordban. A változó NF a bemeneti rekord összes mezőjéhez van beállítva. Nem létező mezőkre (pl $ NF) a null sztringet állítják elő. Azonban a nem létező mező hozzárendeléséhez (pl. $ (NF + 2) = 5) növeli a NF, az összes értéket adja meg a null karakterláncú beavatkozó mezők, és az értékét $0 újból át kell adni, a mezőket pedig a OFS. A negatív számozott mezőkre vonatkozó hivatkozások végzetes hibát okoznak. csökkentjük NF okozza az új érték múltbeli mezők értékeinek elvesztését, és a $0 újból át kell adni, a mezőket pedig a OFS. Egy érték hozzárendelése egy meglévő mezőhöz az egész rekord újbóli létrehozását eredményezi $0 hivatkoznak. Hasonlóképpen, hozzárendel egy értéket $0 a rekord újrahasznosítását eredményezi, és új értékeket hoz létre a mezők számára. gawk beépített változók: ARGC A parancssori argumentumok száma (nem tartalmazza a mamlasz , vagy a programforrás). ARGIND Az index a ARGV az aktuális fájl feldolgozásakor. ARGV A parancssori érvek metszete. A tömb indexelve 0 és ARGC - 1. Dinamikusan megváltoztatja a ARGV vezérelheti az adatokhoz használt fájlokat. BINMODE A nem POSIX rendszereken a `bináris 'mód használatát határozza meg az összes I / O fájl számára. Az 1, 2 vagy 3 numerikus értékek meghatározzák, hogy a bemeneti fájlok, a kimeneti fájlok vagy az összes fájlnak bináris I / O-nak kell lennie. A "R", vagy "W" adja meg, hogy a bemeneti fájlok vagy a kimeneti fájlok bináris I / O-t használjanak. A "Rw" vagy "Wr" adja meg, hogy az összes fájlnak bináris I / O-t kell használnia. Bármelyik másik karakterlánc értékét a következőképpen kell kezelni "Rw", de figyelmeztető üzenetet generál. CONVFMT A számok átváltási formátuma, "% .6g", alapértelmezés szerint. ENVIRON Az aktuális környezet értékeit tartalmazó tömb. A tömböt a környezeti változók indexelik, minden egyes elem a változó értéke (pl.ENVIRON "HOME" talán / Home / arnold). A tömb megváltoztatása nem befolyásolja a környezetet, amelyet a programok látnak mamlasz átirányítással vagy a rendszer()funkció. ERRNO Ha rendszerhiba következik be, vagy átirányítja a következőt: getline, olvasás közben getline, vagy a Bezárás(), azután ERRNO tartalmaz egy karakterláncot, amely leírja a hibát. Az érték nem angol nyelvű fordítással érhető el. FIELDWIDTHS A terepi kiterjedésű terepen elkülönített lista. Ha be van állítva, mamlasz a bemenetet a rögzített szélességű mezőkre használja, ahelyett, hogy a FS mint mezőszétválasztó. FÁJL NÉV Az aktuális bemeneti fájl neve.Ha a parancssorban nincsenek megadva fájlok, akkor a FÁJL NÉV `` - ''. Azonban, FÁJL NÉV nincs meghatározva a KEZDŐDIK blokk (hacsak nincs beállítva getline). FNR A beviteli rekord száma az aktuális bemeneti fájlban. FS A beviteli mező szétválasztója alapértelmezés szerint egy szóközt. Lát Fields, felett. IGNORECASE Az összes szabályos kifejezés és a karakterlánc műveleteinek esetleges érzékenységét szabályozza. Ha IGNORECASE nem nulla értékű, majd string-összehasonlítások és minták illesztése a szabályokban, terepi felosztás a FS, rekord elkülönítve a RS, reguláris kifejezés illeszkedik a ~és !~, és a gensub (), gsub (), index(), mérkőzés(), hasított(), és alatti() A beépített funkciók mindegyike figyelmen kívül hagyja az esetet a rendszeres kifejezés műveletek során. JEGYZET: Array-indexezés nem érintett, sem a Egy fajta() funkció. Így, ha IGNORECASE nem nulla, / AB / megfelel az összes karakterláncnak "Ab", "AB","Ab", és "AB". Mint minden AWK változó esetében, a IGNORECASE nulla, ezért a rendszeres kifejezés és a karakterlánc műveletei normál esetben kis- és nagybetűk. A Unix alatt a teljes ISO 8859-1 latin-1 karakterkészletet használjuk az eset figyelmen kívül hagyása során. LINT Dinamikusan szabályozza a --lint meg lehetőség az AWK programon belül. Ha igaz, mamlasz nyomtatja a szöszi figyelmeztetéseket. Ha hamis, akkor nem. Amikor hozzárendeli a karakterlánc értékét "halálos", a szöszi figyelmeztetések végzetes hibákká válnak, pontosan ugyanúgy --lint meg = végzetes. Minden más valódi érték csak figyelmeztetést nyomtat. NF Az aktuális bemeneti rekord mezők száma. NR Az eddig feljegyzett bemeneti feljegyzések száma. OFMT A számok kimeneti formátuma, "% .6g", alapértelmezés szerint. OFS A kimeneti mező szeparátor, alapértelmezés szerint egy szóköz. ORS A kimeneti rekordelválasztó alapértelmezés szerint új sor. procinfo Ennek a tömbnek az elemei hozzáférést biztosítanak a futó AWK program információihoz. Egyes rendszereken lehetnek elemek a tömbben, "Group1" keresztül "csoport n ' néhány n , amely a folyamatban lévő kiegészítő csoportok számát jelenti. Használja a ban ben hogy tesztelje ezeket az elemeket. A következő elemek garantáltan rendelkezésre állnak: Procinfo "egid" a getegid (2) rendszerhívás. Procinfo "euid" a geteuid (2) rendszerhívás. Procinfo "FS" "FS" ha terepi felosztást végez FS érvényben van, vagy "FIELDWIDTHS" ha terepi felosztást végez FIELDWIDTHS hatályos. Procinfo "gid" a getgid (2) rendszerhívás. Procinfo "pgrpid" az aktuális folyamat folyamatcsoport azonosítója. Procinfo "PID" az aktuális folyamat folyamatazonosítója. Procinfo "PPID" a jelenlegi folyamat szülő folyamatazonosítója. Procinfo "UID" a getuid (2) rendszerhívás. RS A bemeneti rekordelválasztó alapértelmezés szerint új sor. RT A rekord terminátor. gawk készletek RT a beírt szöveghez, amely megfelel a megadott karakternek vagy szabályos kifejezésnek RS. RSTART Az első karakter indexe mérkőzés(); 0, ha nincs egyezés. (Ez azt jelenti, hogy a karakterindexek egyenként indulnak.) RLENGTH A húr hossza, amelyet a mérkőzés(); -1 ha nincs egyezés. SUBSEP Alapértelmezés szerint a több elemet külön töredező elemek elkülönítésére használják ' 034'. textdomain Az AWK program szöveges területe; a program húrjainak lokalizált fordításainak megtalálására szolgál. A rétegek alul vannak indexelve a szögletes zárójelek között ( és ). Ha a kifejezés egy kifejezéslista ( expr , expr …), akkor a tömbindex egy olyan string, amely az egyes kifejezések (string) értékének összefűzéséből áll, elválasztva a SUBSEP változó. Ez a lehetőség többszörös méretű tömbök szimulálására szolgál. Például: i = "A"; j = "B"; k = "C"x i, j, k = "hello, világ n" hozzárendeli a karakterláncot "hello, világ n" a tömb eleméhez x amely a string által indexelt"A 034B 034C". Az AWK összes tömbje asszociatív, vagyis string értékekkel indexelve. A különleges üzemeltető ban ben használható egy ha vagy míg hogy egy tömbnek van egy adott értékből álló indexe. ha (val in array) nyomtatási tömb val Ha a tömb több indexet tartalmaz, akkor használja (i, j) a tömbben. A ban ben konstrukció is használható a mert hurok, hogy egy tömb minden elemére iteráljon. Egy elem törölhető egy tömbből a töröl nyilatkozat. A töröl kifejezést használhatjuk egy tömb teljes tartalmának törléséhez is, csak a tömb nevének megadása nélkül. A változók és mezők lehetnek (lebegőpontos) számok, vagy húrok, vagy mindkettő. A változó értékének értelmezése függ a kontextustól. Ha numerikus kifejezésben használjuk, akkor számként kezeljük, ha stringként használjuk, akkor stringként kezeljük. Ahhoz, hogy a változó számként kezelhető legyen, add hozzá 0-t; hogy azt stringként kezeljük, összekapcsoljuk a null karakterrel. Ha egy karakterláncot számká kell átalakítani, akkor a konverzió a következővel történik: strtod (3). A számot a következő értékek használatával számsorba konvertáljuk: string CONVFMT mint formázott karakterlánc sprintf (3), a változó numerikus értékével, mint argumentummal. Annak ellenére, hogy az AWK összes száma lebegőpontos, az integrált értékek mindig egész számká konvertálva. Így adott CONVFMT = "% 2.2f" a = 12 b = a "" a változó b karakterlánc értéke '12' és nem '12.00'. gawk összehasonlítja a következőket: Ha két változó számszerű, számszerűen hasonlítanak össze. Ha egy érték numerikus, a másiknak string értéke van, ami egy `` numerikus karakterlánc '', akkor az összehasonlításokat is numerikusan végezzük. Ellenkező esetben a számérték átalakul egy karakterláncba, és a karakterláncok összehasonlítása megtörténik. Két sztringet hasonlítanak össze, természetesen, mint húrok. Megjegyezzük, hogy a POSIX szabvány a "numerikus karakterlánc" fogalmát alkalmazza mindenhol, még a string konstansoknak is. Ez azonban egyértelműen helytelen, és mamlasz ezt nem teszi meg. (Szerencsére ezt a szabvány következő verziójában rögzítettük.) Ne feledje, hogy a string konstansok, például '57', vannak nem numerikus karakterláncok, ezek string konstansok. A "numerikus karakterlánc" ötlete csak a mezőkre vonatkozik, getline bemenet, FÁJL NÉV, ARGV elemek, ENVIRON elemek és az elemek által létrehozott tömböt hasított() amelyek numerikus karakterláncok. Az alapötlet az, hogy felhasználói bevitel , és csak a numerikusnak látszó felhasználói bemenetet kell kezelni. A nem inicializált változók 0-as numerikus értéket és a "" (null, vagy empty, string) string értéket tartalmaznak. Kezdve a 3.1 gawk, C-stílusú oktális és hexadecimális konstansokat használhat AWK program forráskódjában. Például az oktális érték 011 egyenlő a tizedesével 9, és a hexadecimális értéket 0x11 egyenlő a tizedesjegyekkel 17. Az AWK karakterlánc-konstansjai a kettős idézőjelek közé záródó karakterek szekvenciái ('). A húrokon belül bizonyos escape szekvenciák mint a C-ben. Ezek a következők: \ A szó szoros értelmében. a A "figyelmeztető" karakter; általában az ASCII BEL karakter. b backspace. f lapdobás. n új sor. r kocsi vissza. t vízszintes fül. v függőleges lap. x hex számjegyeket A karakter a hexadecimális számjegyekből álló karakterláncot jelöli x. Az ANSIC-hoz hasonlóan az összes hexadecimális számjegy a menekülési sorrend részét képezi. (Ez a funkció megmondja nekünk valamit a nyelvtervezésről a bizottságban.) Például, " X1B" az ASCIIESC (escape) karakter. ddd Az 1-es, 2-es vagy 3-jegyű oktális számjegyek által képviselt karakter. Például., ' 033' az ASCII ESC (escape) karakter. c A szó szerinti karakter c . A menekülési szekvenciák állandó szabályos kifejezéseken belül is használhatók (pl./ t f n r v / illeszkedik a fehérek karaktereihez). Kompatibilitási módban az oktális és a hexadecimális escape szekvenciák által képviselt karaktereket szó szerint szabályozzák, ha rendszeres expressziós állandókban használják őket. És így, / A 52b / egyenértékű/ A * b /. Az AWK egy lineáris nyelv. A minta előbb jön, majd a cselekvés. A cselekvési nyilatkozatokat mellékelték { és }. Lehet, hogy a mintázat hiányzik, vagy hiányzik a cselekvés, de természetesen nem mindkettő. Ha a minta hiányzik, akkor a művelet végrehajtásra kerül minden bemeneti adatbázishoz. A hiányzó cselekvés egyenértékű {print} amely az egész rekordot kinyomtatja. A megjegyzések a `` # '' karakterrel kezdődnek, és a sor végéig folytatódnak. Üres vonalak használhatók a kijelentések elválasztására. Általában egy nyilatkozat egy új sorral végződik, azonban ez nem áll fenn a "`, '', {, ?, :, &&, vagy ||. Vonalak végződnek csinál vagy más nyilatkozatai is folytatódnak a következő sorban. Más esetekben egy sort folytathat úgy, hogy befejezte egy '' -vel, ez esetben az új sort figyelmen kívül hagyják. Többszöri állításokat lehet elhelyezni egy sorra, elválasztva őket egy ``; ''. Ez mind a mintázat-cselekvési párt (a szokásos eset) cselekvési részében, mind a mintázat-cselekvési nyilatkozatokban érvényes. Az AWK minták a következők egyike lehetnek: KEZDŐDIK VÉGE / reguláris kifejezés / relációs kifejezés minta && minta minta || minta minta ? minta : minta ( minta ) ! minta minta1 , MINTÁZAT2 KEZDŐDIK és VÉGE két különféle mintázat, amelyeket nem teszteltek a bevitellel szemben. Az akció részei KEZDŐDIK a mintákat összeolvasztják, mintha az összes kijelentést egyetlenben írnák KEZDŐDIK Blokk. Ezek végrehajtása a bemenet bármelyikének olvasása előtt történik. Hasonlóképpen, minden VÉGE blokkok összevonásra kerülnek, és végrehajtásra kerülnek, amikor az összes bemenet kimerült (vagy amikor egy kijárat utasítás végrehajtásra kerül). KEZDŐDIK és VÉGE a minták nem kombinálhatók a mintázat-kifejezések más mintáin. KEZDŐDIK és VÉGE A minták nem tartalmazhatnak hiányzó akcióelemeket. mert / reguláris kifejezés / mintákat, a hozzárendelt utasítás minden olyan bemeneti rekord esetében végrehajtásra kerül, amely megfelel a szabályos kifejezésnek. A rendszeres kifejezések megegyeznek a hagyományos kifejezésekkel egrep (1), és az alábbiakban foglalhatók össze. A relációs kifejezés használhatja az alábbiakban meghatározott műveletek bármelyikét a műveletekről szóló szakaszban. Ezek általában azt vizsgálják, hogy bizonyos mezők megfelelnek-e bizonyos szabályos kifejezéseknek. A &&, ||, és ! a műveletek logikusak ÉS, logikaiak és logikusak NEM, mint a C-ban. Rövidzárlatos értékelést végeznek, mint a C-ban is, és több primitív mintázati kifejezés kombinálására használják. Mint a legtöbb nyelven, zárójelek is használhatók az értékelés sorrendjének megváltoztatására. A ?: az operátor ugyanolyan operátor a C-ban. Ha az első mintázat igaz, akkor a teszteléshez alkalmazott minta a második minta, ellenkező esetben a harmadik. Csak a második és a harmadik minták egyikét értékelik. A minta1 , MINTÁZAT2 A kifejezés formáját a tartományban . Minden beviteli rekordnak megfelel egy olyan rekorddal, amely megfelel minta1 , és addig folytatódik, amíg egy rekord meg nem egyezik MINTÁZAT2 , beleértve. Nem kapcsolódik semmilyen másfajta mintázat kifejezéshez. A szabályos kifejezések a kiterjesztett fajta egrep . Ezek a következő karakterekből állnak: c megegyezik a nem-metakarakterekkel c . c megfelel a szó szerinti karakternek c . . megfelel bármilyen karakternek beleértve új sor. ^ megegyezik egy string kezdetével. $ megegyezik egy karakterlánc végeivel. ABC… karakterlista, a karakterek bármelyikével megegyezik ABC… . ^ ABC… elutasított karakterlista, minden karaktert illeti, kivéve ABC… . r1 | r2 váltakozás: egyezik sem r1 vagy r2 . R1R2 összefonódás: mérkőzések r1 , és akkor r2 . r + illeszkedik egy vagy több r „S. r * nulla vagy annál többet ér r „S. r ? nulla vagy egy r „S. ( r ) csoportosítás: mérkőzések r . r { n } r { n ,} r { n , m } Egy vagy két szám a kapcsos zárójelben egy intervallum kifejezés . Ha van egy szám a zárójelben, az előző szabályos kifejezés r ismétlődik n alkalommal. Ha két szám van elválasztva vesszővel, r ismétlődik n nak nek m alkalommal. Ha van egy szám, amelyet vessző követ, akkor r legalább meg kell ismételni n alkalommal. Az intervallum kifejezései csak akkor állnak rendelkezésre, ha ezek közül bármelyik --posix vagy --re-intervallum a parancssorban van megadva. y illeszkedik az üres karakterlánchoz egy szó elején vagy végén. B megegyezik az üres karakterlánccal. < megegyezik az üres sorral a szó elején. > illeszkedik az üres sorhoz egy szó végén. w illeszkedik bármely szóösszetevő karakterhez (betű, számjegy vagy aláhúzás). W megfelel minden olyan karakternek, amely nem word-constituent. ` illeszkedik az üres sorhoz puffer (string) elején. ' megegyezik az üres sorral a puffer végén. A sztring konstansokban érvényes escape szekvenciák (lásd alább) szintén szabályos kifejezésekre érvényesek. Karakterosztályok a POSIX szabvány új jellemzője. A karakterosztály egy speciális jelölés a meghatározott attribútumú karakterek listájának leírásához, de ahol a tényleges karakterek maguktól országonként és / vagy a karakterkészlettől a karakterkészletig változhatnak. Például az alfabetikus karakter fogalma különbözik az USA-ban és Franciaországban. A karakterosztály csak szabályos kifejezésben érvényes belül a karakterlisták zárójelzései. A karakterosztályok tartalmazzák :, az osztályt jelző kulcsszó, és :. A POSIX szabvány által meghatározott karakterosztályok a következők: : Alnum: Alfanumerikus karakterek. : Alpha: Alphabetical characters. :üres: Szóköz vagy lap karakterek. : Cntrl: Vezérlő karakterek. :számjegy: Numerikus karakterek. :grafikon: Olyan karakterek, amelyek nyomtathatók és láthatóak. (A tér nyomtatható, de nem látható, míg egy egy mindkettő.) :Alsó: Alsó betűs betűk. :nyomtatás: Nyomtatható karakterek (karakterek, amelyek nem vezérlő karakterek.) : Punct: Írásjelek (karakterek, amelyek nem betű, számjegyek, vezérlõ karakterek vagy szóköz karakterek). :tér: Hely karakterek (például hely, lap és formfeed, néhányat említenek). :felső: Felsőbbrendű betűs karakterek. : Xdigit: A hexadecimális számjegyek. Például, mielőtt a POSIX szabványt, hogy megfeleljen az alfanumerikus karaktereknek, meg kellett volna írni / A-Za-Z0-9 /. Ha a karakterkészletben más ábécé karakterek is vannak, akkor ez nem egyezik meg velük, és ha a karakterkészlete eltér az ASCII-ből, ez esetleg nem egyezik meg az ASCII alfanumerikus karakterekkel. A POSIX karakterosztályokkal írhat/ : Alnum: /, és ez megegyezik a karakterkészlet alfabetikus és numerikus karaktereivel. Két további speciális sorozatot jeleníthet meg a karakterlistákban. Ezek a nem ASCII karakterkészletekre vonatkoznak, amelyek egyetlen szimbólummal rendelkeznek (a összeállít elemek ), amelyek több karaktert tartalmaznak, valamint több olyan karakter is, amelyek egyenértékűek egybevetése , vagy rendezés, célok. (Például, francia nyelven, egy egyszerű "` e "és egy súlyos ékezetes e" egyenértékűek.) A szimbólumok összegyűjtése A gyűjtő szimbólum egy többkarakteres összeillesztési elem . és .. Például, ha ch akkor egy összefoglaló elem .Ch. egy szabályos kifejezés, amely megfelel ennek a gyűjtőelemnek, miközben CH egy szabályos kifejezés, amely megfelel mindkettőnek c vagy h. Egyenértékűségi osztályok Az ekvivalenciaosztály a helyspecifikus név az azonos karakterek listájához. A név be van zárva = és =. Például a név e az "e", "e", "" és "e" kifejezésekre használhatók. "Ebben az esetben a" = E = egy szabályos kifejezés, amely megfelel bármelyiknek e, e”, vagy e`. Ezek a funkciók nagyon értékesek a nem angol nyelvű helyeken. A könyvtár működik mamlasz a rendszeres kifejezésegyezéshez használt felhasználások jelenleg csak a POSIX karakterosztályokat ismerik fel; nem ismerik fel a szimbólumokat vagy egyenértékűségi osztályokat. A y, B, <, >, w, W, `, és ' a szolgáltatók sajátosak mamlasz ; ezek a GNU rendszeres kifejezéskönyvtárakban található létesítményeken alapuló kiterjesztések. A különböző parancssori opciók szabályozzák a módját mamlasz a karaktereket szabályos kifejezésekben értelmezi. Nincs lehetőség Az alapértelmezett esetben, mamlasz biztosítja a POSIX szabályos kifejezések és a fent leírt GNU reguláris kifejezést használó összes létesítményét. Az intervallum kifejezései azonban nem támogatottak. --posix Csak POSIX szabályos kifejezések támogatottak, a GNU operátorok nem különösebben. (Például., w megegyezik egy literal w). Az intervallum kifejezései megengedettek. --hagyományos Hagyományos Unix awk a rendszeres kifejezések illeszkednek. A GNU-operátorok nem speciálisak, az intervallum kifejezések nem állnak rendelkezésre, és sem a POSIX karakterosztály (: Alnum: stb). Az oktális és a hexadecimális escape szekvenciák által leírt karaktereket szó szerint értelmezzük, még akkor is, ha azok rendszeres metakaraktert jelentenek. --re-intervallum Engedélyezze az intervallum kifejezéseket a szabályos kifejezésekben, akkor is, ha --hagyományos biztosított. A cselekvési nyilatkozatok zárójelben vannak, { és }. A cselekvési állítások a szokásos hozzárendelési, feltételes és hurkolt utasításokat tartalmazzák a legtöbb nyelven. A rendelkezésre álló operátorok, ellenőrző utasítások és bemeneti / kimeneti állítások a C-ben szereplő felhasználók után vannak mintázva. Az AWK üzemeltetői, a csökkenő elsőbbségi sorrend szerint (…) Csoportosítás $ Mező hivatkozás. ++ -- Növekedés és csökkenés, mind előtag, mind postfix. ^ Kiválasztás (** szintén használható, és **= az átruházási szolgáltató számára). + - ! Unary plus, egyenlőtlen mínusz és logikai negáció. * / % Szorzás, osztás és modulus. + - Összeadás és kivonás. tér Szöveges összefonódás. < > <= >= != == A rendszeres relációs szolgáltatók. ~ !~ Szabályos kifejezésegyezés, kizárt meccs. JEGYZET: Ne használj állandó állandó kifejezést (/ Foo /) az a bal oldalán ~ vagy !~. Csak egyet használjon a jobb oldalon. A kifejezés / foo / ~ exp jelentése ugyanaz (($ 0 ~ / foo /) ~ exp ). Ez általában nem mi volt a célja. ban ben Array tagság. && Logikai ÉS. || Logikai VAGY. ?: A C feltételes kifejezés. Ennek a formája van kif1 ? kif2 : kif3 . Ha kif1 igaz, a kifejezés értéke kif2 , ellenkező esetben kif3 . Csak egy a kif2 és kif3 értékelik. = += -= *= /= %= ^= Feladat. Mind abszolút feladat ( var = érték ) és az operátor-hozzárendelést (a többi formátumot) támogatja. Az ellenőrző utasítások a következők: ha ( feltétel ) nyilatkozat más nyilatkozat míg ( feltétel ) nyilatkozat csinál nyilatkozat míg ( feltétel ) a ( kif1 ; kif2 ; kif3 ) nyilatkozat a ( var ban ben sor ) nyilatkozat szünet Folytatni töröl sor index töröl sor kijárat kifejezés { nyilatkozatok } A bemeneti / kimeneti utasítások a következők: Bezárás( fájl , hogyan ) Zárja be a fájlt, a csövet vagy az együttes eljárást. Az opcionális hogyan csak akkor szabad használni, ha a kétirányú cső egyik végét egy párhuzamos folyamatba zárja. Szintén string értéknek kell lennie "nak nek" vagy "tól től". getline Készlet $0 a következő beviteli rekordból; készlet NF, NR, FNR. getline < fájl Készlet $0 a következő rekordból fájl ; készlet NF. getline var Készlet var a következő beviteli rekordból; készlet NR, FNR. getline var < fájl Készlet var a következő rekordból fájl . parancs | getline var Fuss parancs csővezetékbe a kimenetet $0 vagy var , mint fent. parancs & getline var Fuss parancs mint egy együttes folyamat csővezeték a kimenetet vagy a $0 vagy var , mint fent. Az együttes folyamatok a mamlasz kiterjesztés. következő Állítsa le az aktuális beviteli rekord feldolgozását. A következő beviteli rekord elolvassa és a feldolgozás az AWK program első mintájával kezdődik. Ha elérte a bemeneti adatok végét, a VÉGE blokk (ok), ha van ilyen. nextfile Az aktuális bemeneti fájl feldolgozásának leállítása. A következő beviteli rekord olvasása a következő bemeneti fájlból származik. FÁJL NÉV és ARGIND frissülnek, FNR visszaáll az 1-re, és a feldolgozás az AWK program első mintájával kezdődik. Ha elérte a bemeneti adatok végét, a VÉGE blokk (ok), ha van ilyen. nyomtatás Kinyomtatja az aktuális rekordot. A kimeneti rekord a ORS változó. nyomtatás expr-list Kinyomtatja a kifejezéseket. Minden kifejezést elválasztja a OFS változó. A kimeneti rekord a ORS változó. nyomtatás expr-list > fájl Kinyomtatja a kifejezést fájl . Minden kifejezést elválasztja a OFS változó. A kimeneti rekord a ORS változó. printf fmt, expr-list Formázás és nyomtatás. printf fmt, expr-list > fájl Formázni és nyomtatni fájl . rendszer( cmd-line ) Végezze el a parancsot cmd-line , és adja vissza a kilépési állapotot. (Ez nem feltétlenül elérhető a nem POSIX rendszereken.) fflush ( fájl ) A nyílt kimeneti fájlhoz vagy csőhöz kapcsolódó puffereket öblítse le fájl . Ha fájl hiányzik, akkor a szabványos kimenet kifolyik. Ha fájl a null karakterlánc, akkor az összes nyitott kimeneti fájl és cső a puffereit kipukkanja. További kimeneti átirányítások engedélyezettek nyomtatás és printf. nyomtatás … >> fájl hozzáadja a kimenetet a fájl . nyomtatás … | parancs ír egy csőre. nyomtatás … | parancs adatokat küld egy együttműködési folyamatnak. A getline parancs visszaküldi 0 a fájl végén és -1 hiba esetén. Hiba esetén, ERRNO tartalmaz egy karakterláncot, amely leírja a problémát. JEGYZET: Ha csövet használ, vagy együtt dolgozik a getline, vagy a nyomtatás vagy printf egy hurkon belül te kell használat Bezárás() a parancs új példányainak létrehozásához. Az AWK nem zárja le automatikusan a csöveket vagy az együttes folyamatokat, amikor visszaadják az EOF-t. Az AWK változatai printf kijelentés és sprintf () (lásd a
Leírás
Opció formátum
Opciók
Változók, rekordok és mezők
Records
Fields
Beépített változók
tömbök
Változó gépelés és konverzió
Oktális és hexadecimális konstansok
Vonós konstansok
Minták és műveletek
minták
Rendszeres kifejezések
Hozzászólások
Az üzemeltetők
Ellenőrzési nyilatkozatok
I / O nyilatkozatok
A printf nyilatkozat




