Nom
gawk - escaneig de patrons i llenguatge de processament
Sinopsi
gawk Opcions d'estil POSIX o GNU -f fitxer de programa -- dossier …gawk Opcions d'estil POSIX o GNU -- programa-text dossier … pgawk Opcions d'estil POSIX o GNU -f fitxer de programa -- dossier …pgawk Opcions d'estil POSIX o GNU -- programa-text dossier … Gawk és la implementació del projecte GNU del llenguatge de programació AWK. S'ajusta a la definició del llenguatge a la norma POSIX 1003.2 de llenguatge de comandament i utilitats. Aquesta versió al seu torn es basa en la descripció a El llenguatge de programació AWK , d'Aho, Kernighan i Weinberger, amb les característiques addicionals que es troben a la versió del sistema de versió 4 d'UNIX awk . Gawk també proporciona Laboratoris Bell més recents awk extensions i una sèrie d'extensions específiques de GNU. Pgawk és la versió de perfils de gawk . És idèntic en tots els sentits gawk , excepte que els programes s'executen més lentament i automàticament produeix un perfil d'execució en el fitxer awkprof.out quan estigui fet. Vegeu el --Perfil opció a continuació. La línia de comandaments consisteix en opcions a gawk en si, el text del programa AWK (si no es subministra a través de la -f o --dossier opcions) i valors que es posaran a disposició a la ARGC i ARGV variables AWK predefinides. Gawk les opcions poden ser les opcions tradicionals d'una lletra POSIX o les opcions llargues d'estil GNU. Les opcions POSIX comencen amb una única `` - '', mentre que les opcions llargues comencen amb `` - ''. Les opcions llargues es proporcionen tant per a les característiques específiques de GNU com per a les funcions ordenades per POSIX. Seguint l'estàndard POSIX, gawk Les opcions específiques s'ofereixen mitjançant arguments al -W opció. Múltiple -W Es poden subministrar opcions Cada una -W L'opció té una opció llarga corresponent, tal com es detalla a continuació. Els arguments a opcions llargues s'uneixen amb l'opció per un = signe, sense espais intermedis, o es pot proporcionar en el següent argument de línia d'ordres. Les opcions llargues poden ser abreujades, sempre que l'abreviatura sigui única. Gawk accepta les següents opcions, enumerades alfabèticament. -F fs - separador de camps fs Ús fs per al separador de camp d 'entrada (el valor del FS variable predefinida). -v var = val - Assignar var = val Assigna el valor val a la variable var , abans de l'execució del programa. Aquests valors de variable estan disponibles per al Començar bloc d'un programa AWK. -f fitxer de programa --dossier fitxer de programa Llegiu l'origen del programa AWK del fitxer fitxer de programa , en comptes del primer argument de la línia d'ordres. Múltiple -f (o --dossier) es poden utilitzar opcions. -mf NNN -mr NNN Estableix diversos límits de memòria al valor NNN . El f La marca estableix el nombre màxim de camps, i el r L'indicador estableix la mida màxima del registre. Aquestes dues banderes i el -m opció són de la versió de recerca de Bell Laboratories d'UNIX awk . Se'ls ignora gawk , des de llavors gawk no té límits predefinits. -Només compatible -N tradicionals --compat --tradicional Executa't compatibilitat mode. En el mode de compatibilitat, gawk es comporta de forma idèntica a UNIX awk ; no es reconeixen cap de les extensions específiques de GNU. L'ús de --tradicional es prefereix sobre les altres formes d'aquesta opció. Veure EXTENSIONS DE GNU, a continuació, per obtenir més informació. -W copyleft -W drets d'autor --copyleft --copyright Imprimiu la versió curta del missatge d'informació del copyright GNU a la sortida estàndard i surti amb èxit. -Vivell de variables= dossier --dump-variables= dossier Imprimiu una llista ordenada de variables globals, els seus tipus i valors finals a dossier . Si no dossier es proporciona, gawk utilitza un fitxer anomenat awkvars.out al directori actual. Tenir una llista de totes les variables globals és una bona manera de buscar errors tipogràfics als vostres programes. També usarà aquesta opció si teniu un programa gran amb moltes funcions i voleu assegurar-vos que les vostres funcions no usin de forma involuntària les variables globals que voleu que siguin locals. (Això és un error particularment fàcil de fer amb noms de variables simples com i, j, etcètera.) -W ajuda -Utilització de W - ajuda --ús Imprimiu un resum relativament curt de les opcions disponibles a la sortida estàndard. (Per la Normes de codificació de GNU , aquestes opcions provoquen una sortida immediata i reeixida.) -Firma blanca= mortal --lint= mortal Proporciona advertiments sobre construccions dubtoses o no portàtils per a altres implementacions de l'OLL. Amb un argument opcional de mortal, les advertències falses esdevenen errors fatal. Això pot ser dràstic, però el seu ús sens dubte fomentarà el desenvolupament de programes AWK més nets. -Nombre d'edat - una mica d'edat Proporcioneu advertiments sobre construccions que no siguin portàtils a la versió original d'Unix awk . -W gen-po --gen-po Escaneja i analitza el programa AWK i genereu un GNU .po format en la sortida estàndard amb entrades per a totes les cadenes que es poden localitzar al programa. El programa en si no s'executa. Vegeu el GNU gettext distribució per obtenir més informació sobre .po fitxers -W dades no-decimals --non-dades decimals Reconeixement de valors octal i hexadecimal a les dades d'entrada. Utilitzeu aquesta opció amb gran precaució. -W posix --posix Això s'encén compatibilitat mode, amb les següents restriccions addicionals: * x Les seqüències d'escapament no es reconeixen. * Només l'espai i la pestanya actuen com a separadors de camps quan FS està establert en un sol espai, la nova línia no ho fa. * No podeu continuar les línies després ? i :. * El sinònim func per a la paraula clau funció no es reconeix. * Els operadors ** i **= no es pot utilitzar en lloc de ^ i ^=. * El fflush () la funció no està disponible. -W perfil= prof_file --Perfil= prof_file Envieu dades de perfils a prof_file . El valor per defecte és awkprof.out. Quan s'executi amb gawk , el perfil és només una versió `` bastant impresa '' del programa. Quan s'executi amb pgawk , el perfil conté els recomptes d'execució de cada instrucció del programa en el marge esquerre i els recomptes de trucades de funció per a cada funció definida per l'usuari. -V interval de nou --re interval Habilita l'ús de expressions d'interval en la concordança d'expressions regulars (vegeu Expressions regulars, baix). Les expressions d'intervals no estaven tradicionalment disponibles en el llenguatge AWK. L'estàndard POSIX els va afegir, per fer-ho awk i egrep coherents entre si. No obstant això, és probable que el seu ús trenqui els antics programes AWK, així que gawk només els proporciona si se'ls demana amb aquesta opció, o quan --posix s'especifica. -W font programa-text --source programa-text Ús programa-text com a codi font del programa AWK. Aquesta opció permet l'intercanvi fàcil de les funcions de la biblioteca (s'utilitza a través de la -f i --dossier opcions) amb codi font introduït a la línia d'ordres. Està pensat principalment per a programes AWK mitjà a gran que s'utilitzen en scripts de shell. -W versió --version Imprimiu la informació de la versió per a aquesta còpia en particular de gawk a la sortida estàndard. Això és útil sobretot per saber si la còpia actual de gawk en el vostre sistema està actualitzat respecte a la distribució de la Free Software Foundation. Això també és útil per informar errors. (Per la Normes de codificació de GNU , aquestes opcions provoquen una sortida immediata i reeixida.) -- Indiqueu el final de les opcions. Això és útil per permetre nous arguments al propi programa AWK per començar amb un `` - ''. Això es deu principalment a la coherència amb la convenció d'anàlisi d'arguments utilitzada per la majoria dels altres programes POSIX. En el mode de compatibilitat, qualsevol altra opció es marca com a invàlida, però d'altra banda s'ignoren. En el funcionament normal, sempre que s'hagi subministrat el text del programa, les opcions desconegudes es passen al programa AWK del ARGV matriu per al processament. Això és especialment útil per executar programes AWK a través del mecanisme d'intèrpret executable `` #! ''. EXECUCIÓ DEL PROGRAMA AWK Un programa AWK consisteix en una seqüència d'instruccions de patró-acció i definicions de funcions opcionals. patró { declaracions d'acció }funció nom ( llista de paràmetres ) { declaracions }
Gawk primer llegeix la font del programa des del fitxer de programa (s) si s'especifica, dels arguments a --source, o des del primer argument no opcional a la línia d'ordres. El -f i --source Les opcions es poden utilitzar diverses vegades a la línia d'ordres. Gawk llegeix el text del programa com si fos tot fitxer de programa s i els textos d'origen de línia d'ordres havien estat concatenats junts. Això és útil per a la creació de biblioteques de funcions AWK, sense haver d'incloure'ls en cada nou programa AWK que els utilitza. També ofereix la possibilitat de barrejar funcions de biblioteca amb programes de línia d'ordres. La variable d'entorn AWKPATH especifica una ruta de cerca que cal utilitzar quan es trobin fitxers font amb el nom -f opció. Si aquesta variable no existeix, la ruta predeterminada és".: / usr / local / share / awk". (El directori real pot variar, depenent de com gawk va ser construït i instal·lat). Si es dóna un nom de fitxer al -f L'opció conté un caràcter `` / '', no es fa cap cerca de ruta. Gawk executa els programes AWK en el següent ordre. Primer, totes les assignacions de variables especificades a través de la -v opció es realitza. Pròxim, gawk compila el programa en forma interna. Després, gawk executa el codi al fitxer Començar bloc (si n'hi ha), i després procedeix a llegir cada fitxer anomenat a la ARGV matriu. Si no hi ha cap fitxer indicat a la línia d'ordres, gawk llegeix l'entrada estàndard. Si un nom de fitxer a la línia d'ordres té el formulari var = val es tracta com una assignació variable. La variable var se li assignarà el valor val . (Això passa després de qualsevol Començar S'ha executat un bloc). L'assignació de la variable de la línia de comandaments és més útil per assignar valors dinàmics a les variables AWK usos per controlar com es trenca l'entrada en camps i registres. També és útil per controlar l'estat si es necessiten passis múltiples sobre un únic fitxer de dades. Si el valor d'un element concret de ARGV està buit (''), gawk es passa per sobre. Per cada registre de l'entrada, gawk proves per veure si coincideix amb qualsevol patró en el programa AWK. Per a cada patró que coincideixi amb el registre, l'associat acció s'executa. Els patrons es comproven en l'ordre en què es produeixen al programa. Finalment, una vegada s'esgota l'entrada, gawk executa el codi al fitxer FINAL bloc (s) (si n'hi ha). Les variables AWK són dinàmiques; neixen quan es fan servir per primera vegada. Els seus valors són números o cadenes de coma flotants, o ambdues, depenent de com s'utilitzin. AWK també té matrius unidimensionals; es poden simular matrius amb múltiples dimensions. S'estableixen diverses variables predefinides a mesura que s'executa un programa; aquestes es descriuran segons sigui necessari i es resumeix a continuació. Normalment, els registres estan separats per caràcters de nova línia. Podeu controlar com es separen els registres assignant valors a la variable integrada RS. Si RS és un caràcter únic, aquest caràcter separa els registres. D'una altra manera, RS és una expressió regular. El text de l'entrada que coincideix amb aquesta expressió regular separa el registre. Tanmateix, en mode de compatibilitat, només s'utilitza el primer caràcter del seu valor de cadena per separar registres. Si RS s'estableix a la cadena nul·la, els registres estan separats per línies en blanc. Quan RS s'estableix a la cadena nul·la, el caràcter de nova línia sempre actua com un separador de camp, a més de quin sigui el valor FS pot tenir. A mesura que es llegeix cada registre d'entrada, gawk separa el registre camps , utilitzant el valor de la FS variable com el separador de camp. Si FS és un caràcter únic, els camps estan separats per aquest caràcter. Si FS és la cadena nul·la, llavors cada caràcter individual es converteix en un camp separat. D'una altra manera, FS s'espera que sigui una expressió regular completa. En el cas especial això FS és un espai únic, els camps estan separats per rutes d'espais i / o fitxes i / o línies noves. (Però vegeu la discussió de --posix, baix). NOTA: El valor de Ignora't (vegeu a continuació) també afecta la manera en què els camps es divideixen quan FS és una expressió regular, i com es separen els registres quan RS és una expressió regular. Si el ÀREA DE CAMP La variable s'estableix en una llista de números separada per espais, s'espera que cada camp tingui un ample fix i gawk divideix el registre utilitzant els amples especificats. El valor de FS s'ignora. Assignant un nou valor a FS Invalida l'ús de ÀREA DE CAMP, i restaura el comportament predeterminat. Cada camp del registre d'entrada es pot referenciar per la seva posició, $1, $2, etcètera. $0 és tot el registre. Els camps no necessiten referenciar-se per constants: n = 5imprimeix $ n Imprimeix el cinquè camp del registre d'entrada. La variable NF s'estableix en el nombre total de camps del registre d'entrada. Referències a camps inexistents (és a dir, camps després de $ NF) produeix la cadena nul·la. No obstant això, l'assignació a un camp inexistent (p. Ex., $ (NF + 2) = 5) augmenta el valor de NF, crea els camps que intervenen amb la cadena nul·la com el seu valor, i provoca el valor de $0 per ser recomputat, amb els camps separats pel valor de OFS. Les referències als camps numerats negatius provoquen un error greu. Decrement NF fa que els valors dels camps passin per perdre el nou valor i el valor de $0 per ser recomputat, amb els camps separats pel valor de OFS. Assignar un valor a un camp existent fa que el registre sencer sigui reconstruït quan $0 es fa referència. De la mateixa manera, assignant un valor a $0 fa que es respliti el registre, creant nous valors per als camps. Gawk Les variables integrades són: ARGC El nombre d'arguments de línia d'ordres (no inclou opcions a gawk , o la font del programa). ARGIND L'índex a ARGV del fitxer actual que s'està processant. ARGV Matriu d'arguments de la línia d'ordres. La matriu està indexada de 0 a ARGC - 1. Canvi de contingut dinàmic de ARGV pot controlar els fitxers utilitzats per a les dades. BINMODE En sistemes no POSIX, especifica l'ús del mode `` binari '' per a totes les E / S d'arxius. Els valors numèrics d'1, 2 o 3 especifiquen que els fitxers d'entrada, els fitxers de sortida o tots els fitxers, respectivament, han d'utilitzar l'E / S binària. Valors de cadena de "r", o "w" especifiqueu que els fitxers d'entrada o els fitxers de sortida, respectivament, han d'utilitzar l'E / S binari. Valors de cadena de "rw" o "wr" especifiqueu que tots els fitxers han d'utilitzar l'E / S binària. Qualsevol altre valor de cadena es tracta com "rw", però genera un missatge d'advertència. CONVFMT El format de conversió per als números, "% .6g", per defecte. ENTORN Una matriu que conté els valors de l'entorn actual. La matriu està indexada per les variables d'entorn, ja que cada element és el valor d'aquesta variable (p. Ex.,ENVIRON "HOME" potser / home / arnold). Canviar aquesta matriu no afecta l'entorn vist per programes que gawk genera via redirecció o la sistema ()funció ERRNO Si es produeix un error del sistema fent una redirecció getline, durant una lectura per a getline, o durant un tancar (), llavors ERRNO contindrà una cadena que descriu l'error. El valor està subjecte a la traducció en llocs no espanyols. ÀREA DE CAMP Una llista separada d'amples de camp d'espai en blanc. Quan estigueu configurat, gawk analitza l 'entrada en camps d' amplada fixa, en comptes d 'utilitzar el valor del FS variable com el separador de camp. NOM DE L'ARXIU El nom del fitxer d'entrada actual.Si no s'especifiquen cap fitxer a la línia d'ordres, el valor de NOM DE L'ARXIU és `` - ''. Malgrat això, NOM DE L'ARXIU no està definit dins de la Començar bloqueig (tret que no hagueu establert getline). FNR El número de registre d'entrada al fitxer d'entrada actual. FS El separador de camp d'entrada, un espai per defecte. Veure Camps, a dalt. Ignora't Controla la sensibilitat entre majúscules i minúscules de totes les expressions regulars i operacions de cadena. Si Ignora't té un valor que no és nul, a continuació, comparacions de cadena i coincidència de patrons a les regles, dividint el camp amb FS, marqueu la separació amb RS, expressió regular coincident amb ~i !~, i la gensub (), gsub (), índex (), partit (), split (), i sub () Les funcions incorporades ignoren el cas en fer operacions d'expressió regular. NOTA: La subscripció de matriu és no afectada, ni és la Asort () funció Per tant, si Ignora't no és igual a zero, / aB / coincideix amb totes les cadenes "ab", "aB","Ab", i "AB". Igual que amb totes les variables AWK, el valor inicial de Ignora't és zero, de manera que totes les expressions regulars i les operacions de la cadena normalment són majúscules i minúscules. Sota Unix, s'utilitza el joc de caràcters complet ISO 8859-1 Llatí-1 quan s'ignora el cas. LINT Proporciona control dinàmic de la --lint opció des d'un programa AWK. Quan sigui cert, gawk imprimeix advertiments de lint. Quan és fals, no ho fa. Quan s'assigna el valor de cadena "fatal", les advertències de pèrdua esdevenen errors fatals, exactament com --lint = mortal. Qualsevol altre valor veritable només imprimeix advertències. NF El nombre de camps del registre d'entrada actual. NR El nombre total de registres d'entrada registrats fins ara. OFMT El format de sortida dels números, "% .6g", per defecte. OFS El separador de camp de sortida, un espai per defecte. ORS El separador de registre de sortida, de manera predeterminada, una línia nova. PROCINFO Els elements d'aquesta matriu proporcionen accés a informació sobre el programa AWK en curs. En alguns sistemes, pot haver elements de la matriu, "grup1" a través grup " n ' per a alguns n , que és la quantitat de grups complementaris que té el procés. Utilitzar el in operador per provar aquests elements. Estan disponibles els següents elements: PROCINFO "egid" el valor de la getegid (2) crida al sistema. PROCINFO "euid" el valor de la geteuid (2) crida al sistema. PROCINFO "FS" "FS" si es divideix el camp amb FS està en vigor, o bé "ÀMBITS DE FOC" si es divideix el camp amb ÀREA DE CAMP està en vigor. PROCINFO "gid" el valor de la getgid (2) crida al sistema. PROCINFO "pgrpid" l'identificador del grup de procés del procés actual. PROCINFO "pid" l'ID del procés del procés actual. PROCINFO "ppid" l'ID del procés principal del procés actual. PROCINFO "uid" el valor de la getuid (2) crida al sistema. RS El separador de registre d'entrada, de manera predeterminada, una línia nova. RT El terminador de registre. Gawk conjunts RT al text d'entrada que coincideix amb el caràcter o expressió regular especificada per RS. RSTART L'índex del primer caràcter coincident amb partit (); 0 si no hi ha cap coincidència. (Això implica que els índexs de caràcters comencen en un.) RLENGTH La longitud de la cadena corresponent per partit (); -1 si no hi ha cap coincidència. SUBSEP El caràcter utilitzat per separar diversos subíndexs en elements de matriu, de manera predeterminada ' 034'. TEXTDOMAIN El domini de text del programa AWK; usat per trobar les traduccions localitzades per a les cadenes del programa. Les matrius estan subscrites amb una expressió entre claudàtors ( i ). Si l'expressió és una llista d'expressions ( expr , expr …), llavors el subíndex de matriu és una cadena que consisteix en la concatenació del valor (cadena) de cada expressió, separada pel valor del SUBSEP variable. Aquesta instal·lació s'utilitza per simular matrius multiplicades. Per exemple: i = "A"; j = "B"; k = "C"x i, j, k = "hola, món n" assigna la cadena "hola, món n" a l'element de la matriu x que està indexat per la cadena"A 034B 034C". Totes les matrius d'AWK són associatives, és a dir, indexades per valors de cadena. L'operador especial in es pot utilitzar en un si o mentre declaració per veure si una matriu té un índex que consisteix en un valor en particular. si (val in array) matriu d'impressió val Si la matriu té diversos subíndexs, utilitzeu (i, j) en la matriu. El in La construcció també es pot utilitzar en un per a loop per iterar sobre tots els elements d'una matriu. Es pot eliminar un element d'una matriu mitjançant el esborrar declaració. El esborrar La declaració també es pot utilitzar per eliminar tot el contingut d'una matriu, només especificant el nom de la matriu sense un subíndex. Les variables i els camps poden ser (números flotants), o cadenes, o totes dues. La manera com s'interpreta el valor d'una variable depèn del seu context. Si s'utilitza en una expressió numèrica, es tractarà com un número, si s'utilitza com una cadena es tractarà com una cadena. Per obligar a una variable a tractar-se com un número, afegiu-hi 0; per obligar-lo a tractar-se com una cadena, concatenar-lo amb la cadena nul·la. Quan una cadena s'ha de convertir en un número, la conversió s'aconsegueix utilitzant strtod (3). Es converteix un número en una cadena mitjançant el valor de CONVFMT com a cadena de format per a sprintf (3), amb el valor numèric de la variable com a argument. Tanmateix, tot i que tots els números de AWK són punts flotants, els valors integrals són sempre convertits com enters. Per tant, donat CONVFMT = "% 2.2f" a = 12 b = a "" la variable b té un valor de cadena de '12' i no '12.00'. Gawk realitza comparacions de la següent manera: si dues variables són numèriques, es comparen numèricament. Si un valor és numèric i l'altre té un valor de cadena que és una cadena ``, '' llavors les comparacions també es fan de forma numèrica. En cas contrari, el valor numèric es converteix en una cadena i es fa una comparació de cadena. Es comparen dues cadenes, és clar, com a cadenes. Tingueu en compte que l'estàndard POSIX aplica el concepte de `` cadena numèrica '' a tot arreu, fins i tot a constants de cadena. Tanmateix, això és clarament incorrecte, i gawk no ho fa. (Afortunadament, això es soluciona a la propera versió de l'estàndard). Tingueu en compte que les constants de cadena, com ara '57', són no cadenes numèriques, són constants de cadena. La idea de `` cadena numèrica '' només s'aplica als camps, getline entrada, NOM DE L'ARXIU, ARGV elements, ENTORN elements i elements d'una matriu creada per split () que són cadenes numèriques. La idea bàsica és aquesta entrada de l'usuari , i només l'entrada de l'usuari, que es veu numèrica, s'ha de tractar d'aquesta manera. Les variables no inicialitzades tenen el valor numèric 0 i el valor de la cadena "" (la cadena nul·la o buida). Començant amb la versió 3.1 de gawk, podeu utilitzar constants octals i hexadecimals d'estil C al codi font del vostre programa AWK. Per exemple, el valor octal 011 és igual a decimal 9, i el valor hexadecimal 0x11 és igual a un decimal 17. Les constants de cadena a AWK són seqüències de caràcters tancats entre cometes dobles ('). Dins de cadenes, certes seqüències d'escapament són reconeguts, com en C. Aquests són: \ Una barra invertida literal. a El caràcter `` alert '' En general, el caràcter ASCII BEL. b espai enrere. f feed-form. n nova línia. r retorn de carro. t pestanya horitzontal. v pestaña vertical. x dígits hexadecimals El caràcter representat per la cadena de dígits hexadecimals següent al x. Com en ANSIC, tots els següents dígits hexadecimals es consideren part de la seqüència d'escapament. (Aquesta funció ens hauria de dir alguna cosa sobre el disseny de llenguatges per part del comitè). E.g., " x1B" és el caràcter ASCIIESC (escapament). ddd El caràcter representat per la seqüència d'dígits 1, 2 o 3 dígits. Per exemple., ' 033' és el caràcter ASCII ESC (escapament). c El caràcter literal c . Les seqüències d'escapament també es poden utilitzar dins d'expressions regulars constants (p. Ex.,/ t f n r v / coincideix amb caràcters d'espai en blanc). En el mode de compatibilitat, els caràcters representats per seqüències d'escapament octal i hexadecimal es tracten literalment quan s'utilitzen en constants d'expressions regulars. Per tant, / a 52b / és equivalent a/ a * b /. AWK és un llenguatge orientat a la línia. El model apareix primer, i després l'acció. S'han tancat les declaracions d'acció { i }. Pot ser que el patró no estigui disponible, o pot ser que falti l'acció, però, per descomptat, no tots dos. Si falta el patró, l'acció s'executa per a cada registre d'entrada. Una acció que falta és equivalent a { imprimir } que imprimeix tot el registre. Els comentaris comencen amb el caràcter `` # '' i continuen fins al final de la línia. Es poden utilitzar línies en blanc per separar les declaracions. Normalment, una declaració acaba amb una nova línia; no obstant això, aquest no és el cas de les línies que acaben amb un ``, '', {, ?, :, &&, o ||. Línies que acaben a fer o altra cosa també tenen les seves declaracions automàticament continuades en la següent línia. En altres casos, es pot continuar una línia acabant amb una ', en aquest cas la nova línia serà ignorada. Es poden establir múltiples afirmacions en una línia separant-les amb una ``; ''. Això s'aplica tant a les declaracions dins de la part d'acció d'un parell d'accions de patrons (el cas habitual) com a les declaracions de patrons-acció. Els patrons AWK poden ser un dels següents: Començar FINAL / Expressió normal / expressió relacional patró && patró patró || patró patró ? patró : patró ( patró ) ! patró patró1 , patró2 Començar i FINAL Hi ha dos tipus especials de patrons que no es compten amb l'entrada. Les parts d'acció de tot Començar Els patrons es combinen com si totes les declaracions s'hagin escrit en una sola Començar bloc. S'executen abans que es llegeixi cap entrada. De la mateixa manera, tots els FINAL els blocs es fusionen i s'executen quan s'esgota tota l'entrada (o quan un sortir la instrucció s'executa). Començar i FINAL Els patrons no es poden combinar amb altres patrons en expressions de patró. Començar i FINAL Els patrons no poden tenir parts d'acció que falten. Per / Expressió normal / patrons, la instrucció associada s'executa per cada registre d'entrada que coincideixi amb l'expressió regular. Les expressions regulars són iguals a les de egrep (1), i es resumeixen a continuació. A expressió relacional Podeu utilitzar qualsevol dels operadors definits a continuació a la secció sobre accions. Aquests generalment comproquen si determinats camps coincideixen amb certes expressions regulars. El &&, ||, i ! Els operadors són lògics AND, OR lògics i NO lògics, respectivament, com a C. Fer avaluació de curtcircuit, també com en C, i s'utilitzen per combinar expressions de patrons més primitius. Com en la majoria dels idiomes, es poden utilitzar parèntesis per canviar l'ordre d'avaluació. El ?: L'operador és com el mateix operador a C. Si el primer patró és veritable, el patró utilitzat per a la prova és el segon patró, en cas contrari és el tercer. Només s'avalua un dels patrons segon i tercer. El patró1 , patró2 La forma d'una expressió es diu a patró de rang . Coincideix amb tots els registres d'entrada començant amb un registre que coincideix patró1 , i continuant fins a un registre que coincideixi patró2 , inclusiu. No es combina amb cap altra expressió de patró. Les expressions regulars són el tipus estès que es troba en egrep . Es componen de caràcters de la següent manera: c coincideix amb el metacharacter no c . c coincideix amb el caràcter literal c . . coincideix amb qualsevol caràcter incloent nova línia. ^ coincideix amb l'inici d'una cadena. $ coincideix amb el final d'una cadena. abc … llista de caràcters, coincideix amb qualsevol dels caràcters abc … . ^ abc … llista de caràcters negats, coincideix amb qualsevol caràcter excepte abc … . r1 | r2 alternança: coincideix tampoc r1 o r2 . r1r2 concatenació: coincidències r1 , i llavors r2 . r + coincideix amb un o més r 's. r * coincideix amb zero o més r 's. r ? coincideix amb zero o un r 's. ( r ) agrupació: coincidències r . r { n } r { n ,} r { n , m } Un o dos nombres dins de claudàtors denoten un expressió d'interval . Si hi ha un número a les claus, l'expressió regular anterior r es repeteix n temps. Si hi ha dos números separats per una coma, r es repeteix n a m temps. Si hi ha un número seguit d'una coma, llavors r es repeteix com a mínim n temps. Les expressions d'intervals només estan disponibles si n'hi ha cap --posix o --re interval s'especifica a la línia d'ordres. y coincideix amb la cadena buida al principi o al final d'una paraula. B coincideix amb la cadena buida dins d'una paraula. < coincideix amb la cadena buida al principi d'una paraula. > coincideix amb la cadena buida al final d'una paraula. w coincideix amb qualsevol caràcter constitutiu de la paraula (lletra, dígit o subratllat). W coincideix amb qualsevol caràcter que no sigui constituent de paraula. ` coincideix amb la cadena buida al començament d'un buffer (cadena). ' coincideix amb la cadena buida al final d'un buffer. Les seqüències d'escapament que són vàlides en constants de cadena (vegeu a continuació) també són vàlides en expressions regulars. Classes de caràcters són una nova característica introduïda a l'estàndard POSIX. Una classe de caràcter és una notació especial per descriure llistes de caràcters que tenen un atribut específic, però on els propis caràcters poden variar de país a país o de caràcters a conjunt de caràcters. Per exemple, la noció del caràcter alfabètic és diferent als EUA i a França. Una classe de caràcter només és vàlida en una expressió regular dins els claudàtors d'una llista de caràcters. Les classes de caràcters consisteixen en :, una paraula clau que denota la classe i :. Les classes de caràcters definides per l'estàndard POSIX són: : alnum: Caràcters alfanumèrics. : alfa: Caràcters alfabètics. :en blanc: Espai o caràcters de tabulació. : cntrl: Controla els personatges. :dígit: Caràcters numèrics. :gràfic: Personatges que són imprimibles i visibles. (Un espai és imprimible, però no visible, mentre que un a és ambdós.) :més baix: Caràcters alfabètics en minúscules. :imprimir: Caràcters imprimibles (caràcters que no són caràcters de control). : punt: Caràcters de puntuació (caràcters que no són lletra, dígits, caràcters de control o caràcters d'espai). : espai: Caràcters espacials (com ara espai, pestanya i formfeed, per citar alguns). : superior: Caràcters alfabètics en majúscules. : xdigit: Personatges que són dígits hexadecimals. Per exemple, abans de l'estàndard POSIX, per coincidir amb els caràcters alfanumèrics, hauríeu d'haver d'escriure / A-Za-z0-9 /. Si el vostre joc de caràcters tenia altres caràcters alfabètics, això no coincidirà amb ells, i si el vostre conjunt de caràcters es comparava de manera diferent a ASCII, potser no coincideixi amb els caràcters alfanumèrics ASCII. Amb les classes de caràcters POSIX, podeu escriure/ : alnum: /, i això coincideix amb els caràcters alfabètics i numèrics del conjunt de caràcters. Dues seqüències especials addicionals poden aparèixer a les llistes de caràcters. Aquests s'apliquen als conjunts de caràcters que no són ASCII, que poden tenir símbols simples (anomenats elements de recopilació ) que es representen amb més d'un caràcter, així com diversos caràcters equivalents recollint o classificació, finalitats. (Per exemple, en francès, un pla `` e '' i un accentuat greu`` són equivalents). Enganxar símbols Un símbol de compilació és un element de selecció de caràcters multiplicat adjunt . i .. Per exemple, si ch és un element de collage, llavors .ch. és una expressió regular que coincideix amb aquest element de compilació, mentre que ch és una expressió regular que coincideix amb qualsevol c o h. Classes d'equivalència Una classe d'equivalència és un nom específic local per a una llista de caràcters que són equivalents. El nom està tancat = i =. Per exemple, el nom e es pot usar per representar tots els `` e, '' e ',' 'i `` e`.' 'En aquest cas, = e = és una expressió regular que coincideix amb qualsevol de e, e ', o e`. Aquestes característiques són molt valuoses en llocs que no parlen anglès. La biblioteca funciona això gawk els usos per a la concordança d'expressions regulars actualment només reconeixen les classes de caràcters POSIX; no reconeixen símbols de compilació o classes d'equivalència. El y, B, <, >, w, W, `, i ' Els operadors són específics per a gawk ; són extensions basades en instal·lacions de les biblioteques d'expressió regular de GNU. Les diverses opcions de la línia d'ordres controlen com gawk interpreta els caràcters en expressions regulars. Sense opcions En el cas per defecte, gawk proporcioneu totes les instal·lacions de les expressions regulars POSIX i els operadors d'expressió regular GNU descrits anteriorment. No obstant això, les expressions d'interval no són compatibles. --posix Només s'admeten expressions regulars POSIX, els operadors GNU no són especials. (Per exemple., w coincideix amb un literal w). Es permeten expressions d'interval. --tradicional Unix tradicional awk Les expressions regulars coincideixen. Els operadors GNU no són especials, les expressions d'intervals no estan disponibles, i tampoc no són les classes de caràcters POSIX (: alnum: etcètera). Els caràcters descrits per seqüències d'escapament octal i hexadecimal es tracten literalment, fins i tot si representen metacaracteres d'expressió regular. --re interval Permet expressions d'interval en expressions regulars, fins i tot si --tradicional s'ha proporcionat. Les declaracions d'acció estan tancades en tirants, { i }. Les declaracions d'acció consten de les declaracions habituals d'assignació, condicionals i repetides que es troben en la majoria dels idiomes. Els operadors, les instruccions de control i les declaracions d'entrada / sortida estan dissenyades després d'aquelles a C. Els operadors d'AWK, en ordre de disminució de prioritat, són (…) Agrupació $ Referència de camp. ++ -- Increment i decrement, tant de prefix com de postfix. ^ Exponentació (** També es pot utilitzar, i **= per l'operador d'assignació). + - ! Unary plus, unary minus i negació lògica. * / % Multiplicació, divisió i mòdul. + - Addició i resta. espai Concatenació de cadenes. < > <= >= != == Els operadors relacionals regulars. ~ !~ Partit d'expressions regulars, coincidència negada. NOTA: No utilitzeu una expressió regular constant (/ foo /) a la part esquerra de la ~ o !~. Només feu servir un a la dreta. L'expressió / foo / ~ exp té el mateix significat que (($ 0 ~ / foo /) ~ exp ). Això sol ser no què estava destinat. in Membres matricials. && Lògica AND. || OR lògic. ?: L'expressió condicional C Aquest té el formulari expr1 ? expr2 : expr3 . Si expr1 És cert, el valor de l'expressió és expr2 , altrament ho és expr3 . Només un de expr2 i expr3 s'avalua. = += -= *= /= %= ^= Cessió. Tant l'assignació absoluta ( var = valor ) i l'assignació de l'operador (els altres formularis) són compatibles. Les instruccions de control són les següents: si ( condició ) declaració altra cosa declaració mentre ( condició ) declaració fer declaració mentre ( condició ) per a ( expr1 ; expr2 ; expr3 ) declaració per a ( var in matriu ) declaració trencar continueu esborrar matriu índex esborrar matriu sortir expressió { declaracions } Les declaracions d'entrada / sortida són les següents: tancar ( dossier , com ) Tancar fitxer, canonada o coprocessament. L'opció opcional com només s'haurien d'utilitzar quan es tanqui un extrem d'un conducte bidireccional a un coprocessament. També ha de ser un valor de cadena "per" o "de". getline Conjunt $0 del següent registre d'entrada; conjunt NF, NR, FNR. getline < dossier Conjunt $0 des del pròxim registre de dossier ; conjunt NF. getline var Conjunt var del següent registre d'entrada; conjunt NR, FNR. getline var < dossier Conjunt var des del pròxim registre de dossier . comandament | getline var Correr comandament canalitzant la sortida cap a dins $0 o var , com a dalt. comandament | & getline var Correr comandament com un procés de co-processament de la sortida a qualsevol $0 o var , com a dalt. Els co-processos són a gawk extensió Pròxim Deixa de processar el registre d'entrada actual. El registre d'entrada següent es llegeix i el procés comença amb el primer patró del programa AWK. Si s'acaba el final de les dades d'entrada, el FINAL bloc (s), si s'escau, s'executen. nextfile Deixa de processar el fitxer d'entrada actual. El següent registre d'entrada llegit ve del següent fitxer d'entrada. NOM DE L'ARXIU i ARGIND s'actualitzen, FNR es reinicia a 1 i el processament s'inicia amb el primer patró del programa AWK. Si s'acaba el final de les dades d'entrada, el FINAL bloc (s), si s'escau, s'executen. imprimir Imprimeix el registre actual. El registre de sortida es rescindeix amb el valor del ORS variable. imprimir expr-list Imprimeix expressions. Cada expressió està separada pel valor de la OFS variable. El registre de sortida es rescindeix amb el valor del ORS variable. imprimir expr-list > dossier Imprimeix expressions a dossier . Cada expressió està separada pel valor de la OFS variable. El registre de sortida es rescindeix amb el valor del ORS variable. printf fmt, expr-list Format i impressió. printf fmt, expr-list > dossier Format i imprès dossier . sistema ( cmd-line ) Executeu l'ordre cmd-line , i torneu l'estat de sortida. (És possible que no estigui disponible en sistemes que no siguin POSIX.) fflush ( dossier ) Elimineu qualsevol memòria intermèdia associada amb el fitxer de sortida o canalització oberts dossier . Si dossier Falta la sortida estàndard. Si dossier és la cadena nul·la, llavors tots els fitxers de sortida oberts i les canonades tenen els seus buffers en blanc. Es permeten redireccions de sortida addicionals imprimir i printf. imprimir … >> dossier afegeix la sortida al dossier . imprimir … | comandament escriu sobre una canonada. imprimir … | & comandament envia dades a un coprocessament. El getline la comanda torna 0 al final de fitxer i -1 en un error. Després d'un error, ERRNO conté una cadena que descriu el problema. NOTA: Si feu servir una canonada o un coprocessament a getline, o des de imprimir o printf dins d'un bucle, tu haver de ús tancar () per crear noves instàncies de la comanda. AWK no tanca automàticament les canonades ni els coprocessos quan retornen EOF. Les versions AWK de la printf declaració i sprintf () funció (vegeu a continuació) accepta els següents formats d'especificació de conversió: % c Un caràcter ASCII. Si s'utilitza l'argument % c és numèric, es tracta com un caràcter i s'imprimeix. En cas contrari, se suposa que l'argument és una cadena i s'imprimeix l'únic primer caràcter d'aquesta cadena. % d, % i Un nombre decimal (la part sencera). % e,% E Un número de coma flotant del formulari - d.dddddde + - dd. El % E usos de format E en lloc de e. % f Un número de coma flotant del formulari - ddd.dddddd. %bona partida Ús % e o % f conversió, el que sigui més curt, amb zeros no significatius suprimits. El% G usos de format % E en lloc de % e. % o Un nombre octal sense signar (també un enter). % u Un nombre decimal sense signe (de nou, un enter). % s Cadena de caràcters. % x,% X Un número hexadecimal sense signar (un enter). El % X usos de format ABCDEF en lloc deabcdef. %% Un solter % personatge; no es converteix cap argument. Opcionalment, els paràmetres addicionals poden estar entre els % i la carta de control: comptar $ Utilitzar el comptar 'aquest argument en aquest punt del format. Això es diu a especificador posicional i està pensat principalment per al seu ús en versions traduïdes de cadenes de format, no en el text original d'un programa AWK. És un gawk extensió - L'expressió s'ha d'esquerra-justificada dins del seu camp. espai Per a conversions numèriques, prefixeu valors positius amb un espai i valors negatius amb un signe menys. + El signe més, usat abans del modificador d'amplada (vegeu a continuació), diu que sempre proporcioni un signe per a conversions numèriques, fins i tot si les dades que es formularan són positives. El + Invalida el modificador de l'espai. # Utilitzeu una "forma alternativa" per a certes lletres de control. Per % o, subministra un zero inicial. Per % x, i % X, subministra un líder 0x o 0X per un resultat diferent de zero. Per % e, % E, i % f, el resultat sempre conté un punt decimal. Per % g, i % G, els zeros posteriors no s'eliminen del resultat. 0 Un líder 0 (zero) actua com una bandera, que indica que la sortida hauria d'estar acolchada amb zeros en comptes d'espais. Això s'aplica fins i tot a formats de sortida no numèrics. Aquesta bandera només té efecte quan l'amplada del camp és més ample que el valor que s'ha d'imprimir. amplada El camp s'ha d'emplenar a aquest ample. El camp normalment està acolorit amb espais. Si el 0S'ha utilitzat la bandera, està acolchada amb zeros. . prec Un número que especifica la precisió que s'ha d'utilitzar en imprimir. Per al % e, % E, i % fformats, això especifica el nombre de dígits que voleu imprimir a la dreta del punt decimal. Per al % g, i % G formats, especifica el nombre màxim de dígits significatius. Per al % d, % o, % i, % u, % x, i % X formats, especifica el nombre mínim de dígits que voleu imprimir. Per % s, especifica el nombre màxim de caràcters de la cadena que s'ha d'imprimir. La din
Descripció
Format d'opcions
Opcions
Variables, registres i camps
Registres
Camps
Variables incorporades
Matrius
Escriptura i conversió variables
Constants octal i hexadecimal
Constants de cadena
Patrons i accions
Patrons
Expressions regulars
Accions
Operadors
Instruccions de control
Instruccions d'E / S
La declaració printf