AnglaisFrançaisEspagnol

Ad


Icône de favori OnWorks

gawk - En ligne dans le Cloud

Exécutez gawk dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande gawk qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


gawk - langage de balayage et de traitement de modèles

SYNOPSIS


rester bouche bée [Options de style POSIX ou GNU] -f fichier-programme [ -- ] déposer ...
rester bouche bée [Options de style POSIX ou GNU] [ -- ] texte-programme déposer ...

DESCRIPTION


Gawk est l'implémentation du projet GNU du langage de programmation AWK. Il est conforme à
la définition du langage dans la norme POSIX 1003.1. Cette version est à son tour
sur la base de la description dans La AWK Programmation Langage, par Aho, Kernighan et
Weinberger. Gawk fournit les fonctionnalités supplémentaires trouvées dans la version actuelle de Brian
de Kernighan awk et un certain nombre d'extensions spécifiques à GNU.

La ligne de commande se compose d'options pour rester bouche bée lui-même, le texte du programme AWK (s'il n'est pas fourni
via le -f or --déposer options) et les valeurs à mettre à disposition dans le ARGC et ARGV pré-
variables AWK définies.

Quand rester bouche bée est invoqué avec le --profil option, il commence à collecter des statistiques de profilage
dès l'exécution du programme. Gawk fonctionne plus lentement dans ce mode, et automatiquement
produit un profil d'exécution dans le fichier awkprof.out lorsque vous avez terminé. Voir le --profil
option, ci-dessous.

Gawk dispose également d'un débogueur intégré. Une session de débogage interactive peut être lancée en
fournir le --déboguer option à la ligne de commande. Dans ce mode d'exécution, rester bouche bée charges
le code source AWK, puis invite les commandes de débogage. Gawk ne peut déboguer que AWK
source de programme fournie avec le -f option. Le débogueur est documenté dans RESTER BOUCHE BÉE: Efficace
AWK Programmation.

OPTION Format


Gawk les options peuvent être soit des options traditionnelles à une lettre de style POSIX, soit des options longues de style GNU
option. Les options POSIX commencent par un seul "-", tandis que les options longues commencent par "--". Longue
des options sont fournies à la fois pour les fonctionnalités spécifiques à GNU et pour les fonctionnalités mandatées par POSIX.

Gawk-les options spécifiques sont généralement utilisées sous la forme d'options longues. Arguments des options longues
sont soit rejoints à l'option par un = signe, sans espaces intermédiaires, ou ils peuvent être
fourni dans l'argument de ligne de commande suivant. Les options longues peuvent être abrégées, tant que
l'abréviation reste unique.

De plus, chaque option longue a une option courte correspondante, de sorte que l'option de
la fonctionnalité peut être utilisée de l'intérieur #! scripts exécutables.

OPTIONS


Gawk accepte les options suivantes. Les options standard sont répertoriées en premier, suivies de
options pour rester bouche bée extensions, classées par ordre alphabétique par option courte.

-f fichier-programme
--déposer fichier-programme
Lire la source du programme AWK à partir du fichier fichier-programme, au lieu du premier
argument de ligne de commande. Plusieurs -f (ou --déposer) peuvent être utilisées.

-F fs
--séparateur de champs fs
Utilisez fs pour le séparateur de champ de saisie (la valeur du FS variable prédéfinie).

-v var=vague
--attribuer var=vague
Attribuer la valeur vague à la variable var, avant le début de l'exécution du programme.
Ces valeurs variables sont disponibles pour le COMMENCER règle d'un programme AWK.

-b
--caractères-en-octets
Traitez toutes les données d'entrée comme des caractères à un octet. En d'autres termes, ne payez aucun
attention aux informations sur les paramètres régionaux lors de la tentative de traitement des chaînes en tant que multi-octets
personnages. le --posix l'option remplace celle-ci.

-c
--traditionnel
Courir compatibilité mode. En mode compatibilité, rester bouche bée se comporte de manière identique à
celui de Brian Kernighan awk; aucune des extensions spécifiques à GNU n'est reconnue. Voir GNU
EXTENSIONS, ci-dessous, pour plus d'informations.

-C
--droits d'auteur
Imprimer la version courte du message d'information sur le copyright GNU sur la norme
sortie et sortie avec succès.

-d[filet]
--dump-variables[=filet]
Imprimer une liste triée des variables globales, leurs types et valeurs finales à filet. Si
aucune filet est fourni, rester bouche bée utilise un fichier nommé awkvars.out dans le répertoire courant.
Avoir une liste de toutes les variables globales est un bon moyen de rechercher des
erreurs dans vos programmes. Vous utiliseriez également cette option si vous avez un grand
programme avec beaucoup de fonctions, et vous voulez être sûr que vos fonctions ne
utiliser par inadvertance des variables globales que vous vouliez être locales. (C'est un
erreur particulièrement facile à faire avec des noms de variables simples comme i, j, etc.)

-D[filet]
--déboguer[=filet]
Activer le débogage des programmes AWK. Par défaut, le débogueur lit les commandes
interactivement depuis le clavier (saisie standard). L'optionnel filet argument
spécifie un fichier avec une liste de commandes pour que le débogueur exécute des non-
de manière interactive.

-e texte-programme
--la source texte-programme
Utilisez texte-programme comme code source du programme AWK. Cette option permet de
mélange de fonctions de bibliothèque (utilisées via le -f et --déposer options) avec source
code saisi sur la ligne de commande. Il est principalement destiné aux AWK moyens à grands
programmes utilisés dans les scripts shell.

-E filet
--exec filet
Similaire à -f, cependant, cette option est la dernière traitée. Cela devrait être
utilisé avec #! scripts, en particulier pour les applications CGI, pour éviter de transmettre
options ou le code source (!) sur la ligne de commande à partir d'une URL. Cette option désactive
affectations de variables en ligne de commande.

-g
--gen-pot
Scannez et analysez le programme AWK et générez un GNU .pot (Modèle d'objet portable)
fichier de format sur la sortie standard avec des entrées pour toutes les chaînes localisables dans le
programme. Le programme lui-même n'est pas exécuté. Voir le GNU gettext distribution pour
plus d'informations sur .pot fichiers.

-h
--Aidez-moi Imprimez un résumé relativement court des options disponibles sur la sortie standard.
(Par le GNU Codage Normes, ces options entraînent une sortie immédiate et réussie.)

-i fichier-inclus
--comprendre fichier-inclus
Chargez une bibliothèque source awk. Ceci recherche la bibliothèque en utilisant le CHEMIN AWKP
variable d'environnement. Si la recherche initiale échoue, une autre tentative sera effectuée
après avoir ajouté le .awk suffixe. Le fichier ne sera chargé qu'une seule fois (c'est-à-dire,
les doublons sont éliminés), et le code ne constitue pas le programme principal
la source.

-l lib
--charge lib
Charger une bibliothèque partagée lib. Ceci recherche la bibliothèque en utilisant le CHEMIN AWKLIBP
variable d'environnement. Si la recherche initiale échoue, une autre tentative sera effectuée
après avoir ajouté le suffixe de bibliothèque partagée par défaut pour la plate-forme. La bibliothèque
la routine d'initialisation devrait être nommée dl_load().

-L [Plus-value]
--peluche[=Plus-value]
Fournir des avertissements sur les constructions douteuses ou non portables vers d'autres AWK
implémentations. Avec un argument optionnel de fatal, les avertissements de charpie deviennent fatals
les erreurs. Cela peut être drastique, mais son utilisation encouragera certainement le développement
de programmes AWK plus propres. Avec un argument optionnel de invalide, seuls les avertissements concernant
les choses qui sont réellement invalides sont émises. (Ceci n'est pas encore complètement mis en œuvre.)

-M
--grand numéro
Forcer l'arithmétique de précision arbitraire sur les nombres. Cette option n'a aucun effet si rester bouche bée
n'est pas compilé pour utiliser les bibliothèques GNU MPFR et MP.

-n
--données non décimales
Reconnaître les valeurs octales et hexadécimales dans les données d'entrée. Utilisez this option avec l'
mise en garde!

-N
--use-lc-numérique
Cela force rester bouche bée pour utiliser le caractère de virgule décimale de la locale lors de l'analyse de l'entrée
Les données. Bien que la norme POSIX exige ce comportement, et rester bouche bée le fait quand
--posix est en vigueur, la valeur par défaut est de suivre le comportement traditionnel et d'utiliser un
point comme point décimal, même dans les régions où le point n'est pas la décimale
caractère ponctuel. Cette option remplace le comportement par défaut, sans le plein
rigueur draconienne de la --posix option.

-o[filet]
--joli-impression[=filet]
Sortez une jolie version imprimée du programme sur filet. Sinon filet est fourni,
rester bouche bée utilise un fichier nommé awkprof.out dans le répertoire courant.

-O
--optimiser
Activer les optimisations sur la représentation interne du programme. Actuellement,
cela inclut un simple repliement constant et l'élimination des appels de queue pour les récursifs
les fonctions. le rester bouche bée le mainteneur espère ajouter des optimisations supplémentaires au fil du temps.

-p[fichier-prof]
--profil[=fichier-prof]
Démarrez une session de profilage et envoyez les données de profilage à fichier-prof. Le défaut
is awkprof.out. Le profil contient le nombre d'exécutions de chaque instruction dans le
programme dans la marge de gauche et nombre d'appels de fonction pour chaque fonction définie par l'utilisateur.

-P
--posix
Cela s'allume compatibilité mode, avec les restrictions supplémentaires suivantes :

· \x les séquences d'échappement ne sont pas reconnues.

· Seuls l'espace et la tabulation servent de séparateurs de champs lorsque FS est défini sur un seul espace,
la nouvelle ligne ne le fait pas.

· Vous ne pouvez pas continuer les lignes après ? et :.

· Le synonyme fonction pour le mot clé fonction n'est pas reconnu.

· Les opérateurs ** et ** = ne peut pas être utilisé à la place de ^ et ^=.

-r
--re-intervalle
Permettre l'utilisation de intervalle expressions dans la correspondance d'expressions régulières (voir régulier
Expressions, au dessous de). Les expressions d'intervalle n'étaient traditionnellement pas disponibles dans le
langage AWK. Le standard POSIX les a ajoutés, pour faire awk et égrep compatible avec
l'un l'autre. Ils sont activés par défaut, mais cette option reste à utiliser avec
--traditionnel.

-S
--bac à sable
Fonctionne rester bouche bée en mode bac à sable, en désactivant le système() fonction, redirection d'entrée avec
obtenir la ligne, redirection de sortie avec impression et printf, et le chargement des extensions dynamiques.
L'exécution de la commande (via des pipelines) est également désactivée. Cela bloque efficacement un
script d'accéder aux ressources locales (à l'exception des fichiers spécifiés sur le
ligne de commande).

-t
--peluche-vieux
Fournir des avertissements sur les constructions qui ne sont pas portables vers la version originale de
UNIX awk.

-V
--version
Informations sur la version imprimée pour cette copie particulière de rester bouche bée sur la sortie standard.
Ceci est utile principalement pour savoir si la copie actuelle de rester bouche bée sur votre système est en place
à ce jour en ce qui concerne tout ce que la Free Software Foundation distribue.
Ceci est également utile lorsque vous signalez des bogues. (Par le GNU Codage Normes, Ceux-ci
les options provoquent une sortie immédiate et réussie.)

-- Signalez la fin des options. Ceci est utile pour permettre d'autres arguments à l'AWK
programme lui-même pour commencer par un "-". Cela donne de la cohérence avec l'argument
convention d'analyse utilisée par la plupart des autres programmes POSIX.

En mode de compatibilité, toutes les autres options sont signalées comme non valides, mais sont autrement
ignoré. En fonctionnement normal, tant que le texte du programme a été fourni, des options inconnues
sont transmises au programme AWK dans le ARGV tableau pour le traitement. Ceci est particulièrement
utile pour exécuter des programmes AWK via le "#!" mécanisme d'interprétation exécutable.

Pour la compatibilité POSIX, le -W peut être utilisé, suivi du nom d'une option longue.

AWK PROGRAMME EXÉCUTION


Un programme AWK se compose d'une séquence d'instructions d'action de modèle et d'une fonction facultative
définitions

@comprendre "nom de fichier"
@charge "nom de fichier"
modèle { action déclarations }
fonction prénom(paramètre liste) { déclarations }

Gawk lit d'abord la source du programme à partir du fichier-programme(s) si spécifié, à partir des arguments
à --la source, ou à partir du premier argument non optionnel sur la ligne de commande. Les -f et
--la source Les options peuvent être utilisées plusieurs fois sur la ligne de commande. Gawk lit le programme
texte comme si tous les fichier-programmes et les textes source de la ligne de commande avaient été concaténés
ensemble. Ceci est utile pour créer des bibliothèques de fonctions AWK, sans avoir à
les inclure dans chaque nouveau programme AWK qui les utilise. Il offre également la possibilité de mélanger
fonctions de bibliothèque avec des programmes en ligne de commande.

De plus, les lignes commençant par @comprendre peut être utilisé pour inclure d'autres fichiers source dans
votre programme, rendant l'utilisation de la bibliothèque encore plus facile. Cela équivaut à utiliser le -i option.

Lignes commençant par @charge peut être utilisé pour charger des bibliothèques partagées dans votre programme. Cette
équivaut à utiliser le -l option.

La variable d'environnement CHEMIN AWKP spécifie un chemin de recherche à utiliser lors de la recherche de fichiers source
nommé avec le -f et -i option. Si cette variable n'existe pas, le chemin par défaut est
".:/usr/local/share/awk". (Le répertoire réel peut varier, selon la façon dont rester bouche bée était
construit et installé.) Si un nom de fichier donné au -f l'option contient un caractère "/", non
la recherche de chemin est effectuée.

La variable d'environnement CHEMIN AWKLIBP spécifie un chemin de recherche à utiliser lors de la recherche de la source
fichiers nommés avec le -l option. Si cette variable n'existe pas, le chemin par défaut est
"/usr/local/lib/gawk". (Le répertoire réel peut varier, selon la façon dont rester bouche bée a été construit
et installé.)

Gawk exécute les programmes AWK dans l'ordre suivant. Tout d'abord, toutes les affectations de variables
spécifié via le -v option sont effectuées. Prochain, rester bouche bée compile le programme dans un
forme interne. Puis, rester bouche bée exécute le code dans le COMMENCER règle(s) (le cas échéant), puis
procède à la lecture de chaque fichier nommé dans le ARGV tableau (jusqu'à ARGV[ARGC]). S'il n'y a pas
fichiers nommés sur la ligne de commande, rester bouche bée lit l'entrée standard.

Si un nom de fichier sur la ligne de commande a la forme var=vague il est traité comme une variable
mission. La variable var se verra attribuer la valeur vague. (Cela se produit après tout
COMMENCER règle(s) ont été exécutées.) L'affectation de variable de ligne de commande est la plus utile pour
attribuer dynamiquement des valeurs aux variables qu'AWK utilise pour contrôler la façon dont l'entrée est divisée en
champs et enregistrements. Il est également utile pour contrôler l'état si plusieurs passes sont nécessaires
sur un seul fichier de données.

Si la valeur d'un élément particulier de ARGV est vide (""), rester bouche bée le saute dessus.

Pour chaque fichier d'entrée, si un FICHIERDEBUT la règle existe, rester bouche bée exécute le code associé avant
traiter le contenu du fichier. De la même manière, rester bouche bée exécute le code associé à
FICHIER FIN après traitement du fichier.

Pour chaque enregistrement en entrée, rester bouche bée des tests pour voir si cela correspond modèle dans l'AWK
programme. Pour chaque modèle auquel l'enregistrement correspond, rester bouche bée exécute le action.
Les modèles sont testés dans l'ordre où ils apparaissent dans le programme.

Enfin, une fois que toutes les entrées sont épuisées, rester bouche bée exécute le code dans le FIN règle(s) (si
tout).

Command Gamme Partages de fichiers
Selon POSIX, les fichiers nommés sur le awk la ligne de commande doit être des fichiers texte. Le comportement
est ``undefined'' s'ils ne le sont pas. La plupart des versions de awk traiter un répertoire sur la commande
ligne comme une erreur fatale.

À partir de la version 4.0 de rester bouche bée, un répertoire sur la ligne de commande génère un avertissement, mais
est sinon ignoré. Si l'un des --posix or --traditionnel les options sont données, alors
rester bouche bée revient à traiter les répertoires sur la ligne de commande comme une erreur fatale.

VARIABLES, RECORDS ET DES CHAMPS


Les variables AWK sont dynamiques ; ils existent lorsqu'ils sont utilisés pour la première fois. Leur
les valeurs sont soit des nombres à virgule flottante, soit des chaînes, ou les deux, selon la façon dont elles sont
utilisé. AWK a également des tableaux à une dimension ; les tableaux à plusieurs dimensions peuvent être
simulé. Gawk fournit de véritables tableaux de tableaux ; voir Arrays, au dessous de. Plusieurs prédéfinis
les variables sont définies lors de l'exécution d'un programme ; ceux-ci sont décrits au besoin et résumés ci-dessous.

Enregistrements
Normalement, les enregistrements sont séparés par des caractères de nouvelle ligne. Vous pouvez contrôler la façon dont les enregistrements sont
séparés en attribuant des valeurs à la variable intégrée RS. Si RS est n'importe quel caractère,
ce caractère sépare les enregistrements. Autrement, RS est une expression régulière. Texte dans le
l'entrée qui correspond à cette expression régulière sépare l'enregistrement. Cependant, dans
mode de compatibilité, seul le premier caractère de sa valeur de chaîne est utilisé pour séparer
enregistrements. Si RS est défini sur la chaîne nulle, les enregistrements sont séparés par des lignes vides.
Quand RS est défini sur la chaîne nulle, le caractère de nouvelle ligne agit toujours comme un séparateur de champ,
en plus de toute valeur FS puis-je avoir.

Des champs
Au fur et à mesure que chaque enregistrement d'entrée est lu, rester bouche bée divise l'enregistrement en des champs, en utilisant la valeur de
FS variable comme séparateur de champs. Si FS est un caractère unique, les champs sont séparés par
ce personnage. Si FS est la chaîne nulle, alors chaque caractère individuel devient un
champ séparé. Autrement, FS devrait être une expression régulière complète. Dans le
cas particulier que FS est un espace unique, les champs sont séparés par des séries d'espaces et/ou de tabulations
et/ou des nouvelles lignes. (Mais voir la section POSIX COMPATIBILITÉ, au dessous de). REMARQUE: La valeur de
IGNORECASSE (voir ci-dessous) affecte également la façon dont les champs sont divisés lorsque FS est une expression régulière,
et comment les enregistrements sont séparés lorsque RS est une expression régulière.

Si la LARGEURS DE CHAMP variable est définie sur une liste de nombres séparés par des espaces, chaque champ est
devrait avoir une largeur fixe, et rester bouche bée divise l'enregistrement en utilisant les largeurs spécifiées.
La valeur de FS est ignoré. Attribuer une nouvelle valeur à FS or FPAT remplace l'utilisation de
LARGEURS DE CHAMP.

De même, si le FPAT variable est définie sur une chaîne représentant une expression régulière, chaque
Le champ est composé de texte qui correspond à cette expression régulière. Dans ce cas, la régularité
expression décrit les champs eux-mêmes, au lieu du texte qui sépare les champs.
Attribuer une nouvelle valeur à FS or LARGEURS DE CHAMP remplace l'utilisation de FPAT.

Chaque champ de l'enregistrement d'entrée peut être référencé par sa position : $1, $2, Et ainsi de suite. $0
est tout le dossier. Les champs n'ont pas besoin d'être référencés par des constantes :

n = 5
impression $n

imprime le cinquième champ dans l'enregistrement d'entrée.

La variable NF est défini sur le nombre total de champs dans l'enregistrement d'entrée.

Les références à des champs inexistants (c'est-à-dire des champs après $NF) produisent la chaîne nulle.
Cependant, l'affectation à un champ inexistant (par exemple, $(NF+2) = 5) augmente la valeur de NF,
crée tous les champs intermédiaires avec la chaîne nulle comme valeurs et provoque la valeur
of $0 à recalculer, les champs étant séparés par la valeur de BSF. Les références
aux champs numérotés négatifs provoquent une erreur fatale. Décrémentation NF provoque les valeurs de
champs au-delà de la nouvelle valeur à perdre, et la valeur de $0 à recalculer, avec le
champs étant séparés par la valeur de BSF.

L'affectation d'une valeur à un champ existant entraîne la reconstruction de l'ensemble de l'enregistrement lorsque $0 is
référencé. De même, attribuer une valeur à $0 provoque la réédition de l'enregistrement, créant
de nouvelles valeurs pour les champs.

Encastré Variables
GawkLes variables intégrées de sont :

ARGC Le nombre d'arguments de ligne de commande (n'inclut pas les options pour rester bouche béeou de la
source du programme).

ARGIND L'indice en ARGV du fichier en cours de traitement.

ARGV Tableau d'arguments de ligne de commande. Le tableau est indexé de 0 à ARGC - 1.
Modification dynamique du contenu de ARGV peut contrôler les fichiers utilisés pour les données.

MODE BIN Sur les systèmes non POSIX, spécifie l'utilisation du mode « binaire » pour toutes les E/S de fichiers.
Les valeurs numériques de 1, 2 ou 3, spécifient que les fichiers d'entrée, les fichiers de sortie ou tous
les fichiers, respectivement, doivent utiliser les E/S binaires. Valeurs de chaîne de "r"ou "w"
spécifier que les fichiers d'entrée, ou les fichiers de sortie, respectivement, doivent utiliser binaire
E/S. Valeurs de chaîne de "rw" or "wr" spécifier que tous les fichiers doivent utiliser le binaire
E/S. Toute autre valeur de chaîne est traitée comme "rw", mais génère un avertissement
par voie électronique.

CONVFMT Le format de conversion des nombres, "%.6g", par défaut.

ENVIRONNEMENT Un tableau contenant les valeurs de l'environnement actuel. Le tableau est
indexé par les variables d'environnement, chaque élément étant la valeur de ce
variable (par exemple, ENVIRONNEMENT["MAISON"] peut-être "/maison/arnold"). Changer ce tableau
n'affecte pas l'environnement vu par les programmes qui rester bouche bée apparaît via
la redirection ou le système() la fonction.

ERREUR Si une erreur système se produit, soit en effectuant une redirection pour obtenir la ligne, lors d'une lecture
en obtenir la ligne, ou lors d'une Fermer(), puis ERREUR contiendra une chaîne décrivant
l'erreur. La valeur est sujette à la traduction dans les paramètres régionaux non anglais.

LARGEURS DE CHAMP Une liste de largeurs de champ séparées par des espaces. Lorsqu'il est défini, rester bouche bée analyse l'entrée
dans des champs de largeur fixe, au lieu d'utiliser la valeur du FS variable comme
le séparateur de champs. Voir Des champs, au dessus.

NOM DE FICHIER Le nom du fichier d'entrée actuel. Si aucun fichier n'est spécifié sur la commande
ligne, la valeur de NOM DE FICHIER est "-". Cependant, NOM DE FICHIER est indéfini à l'intérieur du
COMMENCER règle (sauf si elle est définie par obtenir la ligne).

RNR Le numéro d'enregistrement d'entrée dans le fichier d'entrée actuel.

FPAT Une expression régulière décrivant le contenu des champs d'un enregistrement. Lorsque
ensemble, rester bouche bée analyse l'entrée dans des champs, où les champs correspondent à la normale
expression, au lieu d'utiliser la valeur de FS variable comme champ
séparateur. Voir Des champs, au dessus.

FS Le séparateur de champ de saisie, un espace par défaut. Voir Des champs, au dessus.

FONCTION Un tableau dont les indices et les valeurs correspondantes sont les noms de tous les utilisateurs-
fonctions définies ou d'extension dans le programme. REMARQUE: Vous ne pouvez pas utiliser le
effacer déclaration avec le FONCTION Tableau.

IGNORECASSE Contrôle la sensibilité à la casse de toutes les opérations sur les expressions régulières et les chaînes.
If IGNORECASSE a une valeur non nulle, puis les comparaisons de chaînes et le modèle
correspondance dans les règles, division de champ avec FS et FPAT, enregistrement en séparant avec
RS, expression régulière correspondant à ~ et !~, et le gensub(), gsub(),
indice(), rencontre(), patsplit(), diviser()et sous() les fonctions intégrées ignorent toutes
cas lors de l'exécution d'opérations d'expression régulière. REMARQUE: l'abonnement au tableau est
ne sauraient affecté. Cependant, le un tri() et asorti() les fonctions sont affectées.
Ainsi, si IGNORECASSE n'est pas égal à zéro, /un B/ correspond à toutes les chaînes
"un B", "un B", "Un B"et "UN B". Comme pour toutes les variables AWK, la valeur initiale de
IGNORECASSE est zéro, donc toutes les opérations d'expression régulière et de chaîne sont
normalement sensible à la casse.

PELUCHE Fournit un contrôle dynamique de la --peluche option à partir d'un programme AWK.
Quand c'est vrai, rester bouche bée imprime des avertissements de peluches. Lorsque faux, il ne le fait pas. Lorsqu'il est affecté
la valeur de la chaîne "fatal", les avertissements de charpie deviennent des erreurs fatales, exactement comme
--lint = fatal. Toute autre valeur vraie n'affiche que des avertissements.

NF Le nombre de champs dans l'enregistrement d'entrée actuel.

NR Le nombre total d'enregistrements d'entrée vus jusqu'à présent.

OFMT Le format de sortie des nombres, "%.6g", par défaut.

BSF Le séparateur de champ de sortie, un espace par défaut.

ORS Le séparateur d'enregistrement de sortie, par défaut une nouvelle ligne.

PRÉC La précision de travail des nombres à virgule flottante de précision arbitraire, 53 par
défaut.

PROCINFO Les éléments de ce tableau donnent accès aux informations sur l'AWK en cours d'exécution
programme. Sur certains systèmes, il peut y avoir des éléments dans le tableau, "groupe 1"
à travers "groupern" pour certains n, qui est le nombre de groupes supplémentaires qui
le processus a. Utilisez le in opérateur pour tester ces éléments. Les
les éléments suivants sont garantis disponibles :

PROCINFO["egid"] La valeur de l' Getegid(2) appel système.

PROCINFO["strftime"]
La chaîne de format d'heure par défaut pour strftime().

PROCINFO["euid"] La valeur de l' geteuid(2) appel système.

PROCINFO["FS"] "FS" si fractionnement de champ avec FS est en vigueur, "FPAT" if
division de champ avec FPAT est en vigueur, ou « LARGEURS DE CHAMP »
si fractionnement de champ avec LARGEURS DE CHAMP est en vigueur.

PROCINFO["identifiants"]
Un sous-tableau, indexé par les noms de tous les identifiants utilisés
dans le texte du programme AWK. Les valeurs indiquent ce que
rester bouche bée connaît les identifiants après avoir terminé
l'analyse du programme ; elles sont ne sauraient mis à jour pendant que le
le programme s'exécute. Pour chaque identifiant, la valeur du
élément est l'un des suivants :

"déployer"
L'identifiant est un tableau.

"intégré"
L'identifiant est une fonction intégrée.

"extension"
L'identifiant est une fonction d'extension chargée via
@charge or -l.

"scalaire"
L'identifiant est un scalaire.

"non typé"
L'identifiant n'est pas typé (peut être utilisé comme
scalaire ou tableau, rester bouche bée ne sait pas encore).

"utilisateur" L'identifiant est une fonction définie par l'utilisateur.

PROCINFO["gid"] La valeur de l' s'énerver(2) appel système.

PROCINFO["pgrpid"] L'ID du groupe de processus du processus actuel.

PROCINFO["pid"] L'ID de processus du processus actuel.

PROCINFO["ppid"] L'ID du processus parent du processus actuel.

PROCINFO["uid"] La valeur de l' getuid(2) appel système.

PROCINFO["sorted_in"]
Si cet élément existe dans PROCINFO, alors sa valeur
contrôle l'ordre dans lequel les éléments du tableau sont parcourus
in en boucles. Les valeurs prises en charge sont "@ind_str_asc",
"@ind_num_asc", "@val_type_asc", "@val_str_asc",
"@val_num_asc", "@ind_str_desc", "@ind_num_desc",
"@val_type_desc", "@val_str_desc", "@val_num_desc"et
"@non trié". La valeur peut également être le nom de n'importe quel
fonction de comparaison définie comme suit :

fonction cmp_fonc(i1, v1, i2, v2)

De i1 et i2 sont les indices, et v1 et v2 sont le
valeurs correspondantes des deux éléments comparés.
Il doit renvoyer un nombre inférieur, égal ou supérieur
que 0, selon la façon dont les éléments du tableau doivent
être commandé.

PROCINFO["entrée", "READ_TIMEOUT"]
Le délai d'attente en millisecondes pour la lecture des données de contribution,
De contribution est une chaîne de redirection ou un nom de fichier. Une valeur
de zéro ou inférieur à zéro signifie qu'il n'y a pas de délai d'attente.

PROCINFO["mpfr_version"]
La version de la bibliothèque GNU MPFR utilisée pour arbitraire
prise en charge des nombres de précision dans rester bouche bée. Cette entrée n'est pas
présent si le support MPFR n'est pas compilé dans rester bouche bée.

PROCINFO["gmp_version"]
La version de la bibliothèque GNU MP utilisée pour arbitraire
prise en charge des nombres de précision dans rester bouche bée. Cette entrée n'est pas
présent si le support MPFR n'est pas compilé dans rester bouche bée.

PROCINFO["prec_max"]
La précision maximale supportée par la bibliothèque GNU MPFR
pour les nombres à virgule flottante de précision arbitraire. Cette
l'entrée n'est pas présente si le support MPFR n'est pas compilé dans
rester bouche bée.

PROCINFO["prec_min"]
La précision minimale autorisée par la bibliothèque GNU MPFR pour
nombres à virgule flottante de précision arbitraire. Cette entrée est
pas présent si le support MPFR n'est pas compilé dans rester bouche bée.

PROCINFO["api_major"]
La version majeure de l'API d'extension. Cette entrée n'est pas
présent si le chargement des extensions dynamiques n'est pas disponible.

PROCINFO["api_minor"]
La version mineure de l'API d'extension. Cette entrée n'est pas
présent si le chargement des extensions dynamiques n'est pas disponible.

PROCINFO["version"] la version de rester bouche bée.

MODE RONDE Le mode d'arrondi à utiliser pour l'arithmétique de précision arbitraire sur les nombres, par
défaut "N" (mode IEEE-754 roundTiesToEven). Les valeurs acceptées sont "N" or
"n" pour roundTiesToEven, "U" or "tu" pour rondVersPositive, "D" or "ré" en
rondVersNégatif, "Z" or "Avec" pour roundTowardZero, et si votre version de
La bibliothèque GNU MPFR le prend en charge, "Un" or "une" pour roundTiesToAway.

RS Le séparateur d'enregistrement d'entrée, par défaut une nouvelle ligne.

RT Le terminateur d'enregistrement. Gawk ensembles RT au texte d'entrée qui correspond au
caractère ou expression régulière spécifié par RS.

DÉMARRER L'index du premier caractère correspondant à rencontre(); 0 si aucune correspondance. (Cette
implique que les indices de caractère commencent à un.)

LONGUEUR La longueur de la chaîne correspondant à rencontre(); -1 si aucune correspondance.

SOUS-SEP Le caractère utilisé pour séparer plusieurs indices dans les éléments de tableau, par
défaut "\034".

SYMTAB Un tableau dont les indices sont les noms de toutes les variables globales actuellement définies
et des tableaux dans le programme. Le tableau peut être utilisé pour un accès indirect en lecture
ou écrire la valeur d'une variable :

foo = 5
SYMTAB["toto"] = 4
impression foo # impressions 4

La isarray() La fonction peut être utilisée pour tester si un élément dans SYMTAB est un
déployer. Vous ne pouvez pas utiliser le effacer déclaration avec le SYMTAB Tableau.

DOMAINETEXTE Le domaine de texte du programme AWK ; utilisé pour trouver les traductions localisées
pour les chaînes du programme.

Arrays
Les tableaux sont indicés avec une expression entre crochets ([ et ]). Si la
expression est une liste d'expressions (expr, expr ...) alors l'indice du tableau est une chaîne
consistant en la concaténation de la valeur (chaîne) de chaque expression, séparée par le
valeur de la SOUS-SEP variable. Cette fonction est utilisée pour simuler plusieurs dimensions
tableaux. Par exemple:

i = "UNE"; j = "B" ; k = "C"
x[je, j, k] = "Bonjour, monde\n"

attribue la chaîne "Bonjour, monde\n" à l'élément du tableau x qui est indexé par le
un magnifique "A\034B\034C". Tous les tableaux dans AWK sont associatifs, c'est-à-dire indexés par des valeurs de chaîne.

L'opérateur spécial in peut être utilisé pour tester si un tableau a un indice composé d'un
valeur particulière :

if (val in déployer)
impression tableau[val]

Si le tableau a plusieurs indices, utilisez (Et, j) in tableau.

La in La construction peut également être utilisée dans un en boucle pour parcourir tous les éléments d'un
déployer. Cependant, le (Et, j) in tableau construct ne fonctionne que dans les tests, pas dans en boucles.

Un élément peut être supprimé d'un tableau en utilisant le effacer déclaration. le effacer déclaration
peut également être utilisé pour supprimer tout le contenu d'un tableau, simplement en spécifiant le tableau
nom sans indice.

rester bouche bée prend en charge de véritables tableaux multidimensionnels. Il n'est pas nécessaire que de tels tableaux soient
``rectangulaire'' comme en C ou C++. Par exemple:

un [1] = 5
un[2][1] = 6
un[2][2] = 7

REMARQUE: Vous devrez peut-être dire rester bouche bée qu'un élément de tableau est vraiment un sous-tableau afin d'utiliser
c'est où rester bouche bée attend un tableau (comme dans le deuxième argument de diviser()). Tu peux faire
ceci en créant un élément dans le sous-tableau, puis en le supprimant avec le effacer
déclaration.

Variable Dactylographie Et Conversion
Les variables et les champs peuvent être des nombres (à virgule flottante), ou des chaînes, ou les deux. Comment la valeur
d'une variable est interprété dépend de son contexte. S'il est utilisé dans une expression numérique,
il sera traité comme un nombre ; s'il est utilisé comme une chaîne, il sera traité comme une chaîne.

Pour forcer une variable à être traitée comme un nombre, ajoutez-lui 0 ; pour le forcer à être traité comme un
chaîne, concaténez-la avec la chaîne nulle.

Les variables non initialisées ont la valeur numérique 0 et la valeur de chaîne "" (la valeur null, ou
chaîne vide).

Lorsqu'une chaîne doit être convertie en nombre, la conversion est effectuée en utilisant
strtod(3). Un nombre est converti en chaîne en utilisant la valeur de CONVFMT comme format
chaîne pour sprintf(3), avec la valeur numérique de la variable comme argument. Cependant,
même si tous les nombres dans AWK sont à virgule flottante, les valeurs intégrales sont toujours converti en
entiers. Ainsi, étant donné

CONVFMT = "%2.2f"
a = 12
b = a ""

la variable b a une valeur de chaîne de "12" ne le comptant pas "12.00".

REMARQUE: Lors du fonctionnement en mode POSIX (comme avec le --posix option), méfiez-vous que locale
paramètres peuvent interférer avec la façon dont les nombres décimaux sont traités : le séparateur décimal de
les nombres que vous nourrissez rester bouche bée doit être conforme à ce que votre région attend, qu'il s'agisse d'un
une virgule (,) ou un point (.).

Gawk effectue les comparaisons comme suit : Si deux variables sont numériques, elles sont comparées
numériquement. Si une valeur est numérique et que l'autre a une valeur de chaîne qui est un « numérique
chaîne », puis les comparaisons sont également effectuées numériquement. Sinon, la valeur numérique est
converti en chaîne et une comparaison de chaîne est effectuée. Deux chaînes sont comparées, de
bien sûr, sous forme de cordes.

Notez que les constantes de chaîne, telles que "57", Sont ne sauraient chaînes numériques, ce sont des chaînes
constantes. L'idée de "chaîne numérique" ne s'applique qu'aux champs, obtenir la ligne contribution, NOM DE FICHIER,
ARGV éléments, ENVIRONNEMENT éléments et les éléments d'un tableau créé par diviser() or
patsplit() qui sont des chaînes numériques. L'idée de base est que utilisateur contribution, et seul utilisateur
l'entrée, qui semble numérique, doit être traitée de cette façon.

Octal et Hexadécimal Constants
Vous pouvez utiliser des constantes octales et hexadécimales de style C dans le code source de votre programme AWK. Pour
exemple, la valeur octale 011 est égal à décimal 9, et la valeur hexadécimale Assistance is
égal à la virgule 17.

Chaîne Constants
Les constantes de chaîne dans AWK sont des séquences de caractères entre guillemets (comme
"valeur"). Dans les chaînes, certains échapper séquences sont reconnus, comme en C. Ce sont :

\\ Une barre oblique inverse littérale.

\a Le caractère « alerte » ; généralement le caractère ASCII BEL.

\b Retour arrière.

\f Saut de formulaire.

\n Nouvelle ligne.

\r Retour chariot.

\t Onglet horizontal.

\v Onglet vertical.

\xhex chiffres
Le caractère représenté par la chaîne de chiffres hexadécimaux suivant le \x. Comme
dans ISO C, tous les chiffres hexadécimaux suivants sont considérés comme faisant partie de l'échappement
séquence. (Cette fonctionnalité devrait nous dire quelque chose sur la conception du langage par
comité.) Par exemple, "\x1B" est le caractère ASCII ESC (échappement).

\ddd Le caractère représenté par la séquence de 1, 2 ou 3 chiffres de chiffres octaux. Par exemple,
"\033" est le caractère ASCII ESC (échappement).

\c Le caractère littéral c.

Les séquences d'échappement peuvent également être utilisées dans des expressions régulières constantes (par exemple,
/[ \t\f\n\r\v]/ correspond aux caractères d'espacement).

En mode de compatibilité, les caractères représentés par des échappements octaux et hexadécimaux
les séquences sont traitées littéralement lorsqu'elles sont utilisées dans des constantes d'expression régulière. Ainsi, /a\52b/
équivaut à /un B/.

MOTIFS ET ACTIONS


AWK est un langage orienté ligne. Le motif vient en premier, puis l'action. action
les déclarations sont incluses dans { et }. Soit le motif peut être manquant, soit l'action peut
manquer, mais, bien sûr, pas les deux. Si le motif est manquant, l'action est exécutée
pour chaque enregistrement d'entrée. Une action manquante équivaut à

{ impression }

qui imprime l'intégralité de l'enregistrement.

Les commentaires commencent par le # caractère et continuez jusqu'à la fin de la ligne. Lignes vides
peut être utilisé pour séparer les déclarations. Normalement, une instruction se termine par une nouvelle ligne, cependant,
ce n'est pas le cas pour les lignes se terminant par une virgule, {, ?, :, &&ou ||. Lignes se terminant par do
or d'autre voient également leurs déclarations se poursuivre automatiquement sur la ligne suivante. Dans
dans d'autres cas, une ligne peut être continuée en la terminant par un "\", auquel cas la nouvelle ligne est
ignoré.

Plusieurs déclarations peuvent être placées sur une même ligne en les séparant par un « ; ». Ceci s'applique à
à la fois les déclarations dans la partie action d'une paire modèle-action (le cas habituel), et
aux déclarations de modèle-action elles-mêmes.

Motifs
Les modèles AWK peuvent être l'un des suivants :

COMMENCER
FIN
FICHIERDEBUT
FICHIER FIN
/Standard expression/
relationnel expression
modèle && modèle
modèle || modèle
modèle ? modèle : modèle
(modèle)
! modèle
pattern1, pattern2

COMMENCER et FIN sont deux types particuliers de modèles qui ne sont pas testés par rapport à l'entrée.
Les parties d'action de tous COMMENCER les motifs sont fusionnés comme si toutes les déclarations avaient été
écrit en un seul COMMENCER régner. Ils sont exécutés avant que l'une des entrées ne soit lue.
De même, tous les FIN les règles sont fusionnées et exécutées lorsque toutes les entrées sont épuisées (ou
quand un sortie l'instruction est exécutée). COMMENCER et FIN les motifs ne peuvent pas être combinés avec d'autres
modèles dans les expressions de modèle. COMMENCER et FIN les modèles ne peuvent pas avoir de parties d'action manquantes.

FICHIERDEBUT et FICHIER FIN sont des modèles spéciaux supplémentaires dont les corps sont exécutés avant
lecture du premier enregistrement de chaque fichier d'entrée de ligne de commande et après lecture du dernier enregistrement
de chaque fichier. À l'intérieur de FICHIERDEBUT règle, la valeur de ERREUR sera la chaîne vide si
le fichier a été ouvert avec succès. Sinon, il y a un problème avec le fichier et le
le code doit utiliser fichier suivant pour l'ignorer. Si ce n'est pas fait, rester bouche bée produit son habituel fatal
erreur pour les fichiers qui ne peuvent pas être ouverts.

Pour /Standard expression/ modèles, l'instruction associée est exécutée pour chaque entrée
enregistrement qui correspond à l'expression régulière. Les expressions régulières sont les mêmes que celles de
égrep(1), et sont résumés ci-dessous.

A relationnel expression peut utiliser l'un des opérateurs définis ci-dessous dans la section sur
Actions. Ceux-ci testent généralement si certains champs correspondent à certaines expressions régulières.

La &&, ||et ! les opérateurs sont respectivement ET logique, OU logique et NON logique,
comme dans C. Ils font l'évaluation de court-circuit, également comme dans C, et sont utilisés pour combiner plus
expressions de modèle primitif. Comme dans la plupart des langues, les parenthèses peuvent être utilisées pour changer
l'ordre d'évaluation.

La ?: opérateur est comme le même opérateur en C. Si le premier motif est vrai alors le
le modèle utilisé pour le test est le deuxième modèle, sinon c'est le troisième. Un seul de
les deuxième et troisième motifs sont évalués.

La pattern1, pattern2 forme d'une expression s'appelle un gamme modèle. ça correspond à tout
les enregistrements d'entrée commençant par un enregistrement qui correspond pattern1, et continue jusqu'à ce qu'un record
qui correspond à pattern2, inclus. Il ne se combine avec aucun autre type de motif
expression.

régulier Expressions
Les expressions régulières sont le genre étendu trouvé dans égrep. Ils sont composés de personnages
comme suit:

c Correspond au non-métacaractère c.

\c Correspond au caractère littéral c.

. Correspond à n'importe quel caractère comme nouvelle ligne.

^ Correspond au début d'une chaîne.

$ Correspond à la fin d'une chaîne.

[abc...] Une liste de caractères : correspond à l'un des caractères abc.... Vous pouvez inclure un
plage de caractères en les séparant par un tiret.

[^abc...] Une liste de caractères niés : correspond à n'importe quel caractère sauf abc....

r1|r2 Alternance : correspond soit r1 or r2.

r1r2 Concaténation : correspondances r1, et alors r2.

r+ Correspond à un ou plusieurs r's.

r* Correspond à zéro ou plus r's.

r? Correspond à zéro ou un r's.

(r) Regroupement : matchs r.

r{n}
r{n,}
r{n,m} Un ou deux nombres entre accolades indiquent un intervalle expression. S'il y a
un nombre entre accolades, l'expression régulière précédente r est répété n
fois. S'il y a deux nombres séparés par une virgule, r est répété n à m
fois. S'il y a un chiffre suivi d'une virgule, alors r est répété au moins
n fois.

\y Correspond à la chaîne vide au début ou à la fin d'un mot.

\B Correspond à la chaîne vide dans un mot.

\< Correspond à la chaîne vide au début d'un mot.

\> Correspond à la chaîne vide à la fin d'un mot.

\s Correspond à n'importe quel caractère d'espacement.

\S Correspond à n'importe quel caractère non blanc.

\w Correspond à n'importe quel caractère constitutif d'un mot (lettre, chiffre ou trait de soulignement).

\W Correspond à tout caractère qui n'est pas constitutif d'un mot.

\` Correspond à la chaîne vide au début d'un tampon (chaîne).

\' Correspond à la chaîne vide à la fin d'un tampon.

Les séquences d'échappement valides dans les constantes de chaîne (voir Chaîne Constants) sont également
valide dans les expressions régulières.

Personnage les classes sont une fonctionnalité introduite dans la norme POSIX. Une classe de caractères est un
notation spéciale pour décrire des listes de caractères qui ont un attribut spécifique, mais
où les caractères réels eux-mêmes peuvent varier d'un pays à l'autre et/ou de
jeu de caractères à jeu de caractères. Par exemple, la notion de ce qu'est un ordre alphabétique
caractère différent aux USA et en France.

Une classe de caractères n'est valide que dans une expression régulière à l'intérieur les crochets d'un caractère
liste. Les classes de caractères se composent de [:, un mot-clé désignant la classe, et :]L’
Les classes de caractères définies par le standard POSIX sont :

[:alnum:] Caractères alphanumériques.

[:alpha:] Caractères alphabétiques.

[:Vide:] Espace ou tabulation.

[:ctrl:] Caractères de contrôle.

[:chiffre:] Caractères numériques.

[:graphique:] Des caractères à la fois imprimables et visibles. (Un espace est imprimable, mais pas
visible, tandis qu'un a est les deux.)

[:inférieur:] Caractères alphabétiques minuscules.

[:imprimer:] Caractères imprimables (caractères qui ne sont pas des caractères de contrôle.)

[:ponct:] Caractères de ponctuation (caractères qui ne sont pas des lettres, des chiffres, des contrôles
caractères ou espaces).

[:espacer:] Caractères d'espace (tels que l'espace, la tabulation et le saut de page, pour n'en nommer que quelques-uns).

[:supérieur:] Caractères alphabétiques majuscules.

[:xchiffre:] Caractères qui sont des chiffres hexadécimaux.

Par exemple, avant la norme POSIX, pour faire correspondre les caractères alphanumériques, vous auriez
dû écrire /[A-Za-z0-9]/. Si votre jeu de caractères contenait d'autres caractères alphabétiques,
cela ne leur correspondrait pas, et si votre jeu de caractères est assemblé différemment de l'ASCII, cela
peut même ne pas correspondre aux caractères alphanumériques ASCII. Avec les classes de caractères POSIX,
tu peux écrire /[[:numéro:]]/, et cela correspond aux caractères alphabétiques et numériques dans
votre jeu de caractères, quel qu'il soit.

Deux séquences spéciales supplémentaires peuvent apparaître dans les listes de caractères. Ceux-ci s'appliquent aux non-ASCII
jeux de caractères, qui peuvent avoir des symboles uniques (appelés assemblage éléments) qui sont
représenté avec plus d'un caractère, ainsi que plusieurs caractères qui sont
équivalent pour assemblage, ou de tri, des fins. (Par exemple, en français, un simple « e » et un
« » grave accentué sont équivalents.)

Assemblage de symboles
Un symbole de classement est un élément de classement à plusieurs caractères inclus dans [. et .].
Par exemple, si ch est un élément de collationnement, alors [[.ch.]] est une expression régulière
qui correspond à cet élément de collation, tandis que [ch] est une expression régulière qui
correspond soit c or h.

Classes d'équivalence
Une classe d'équivalence est un nom spécifique aux paramètres régionaux pour une liste de caractères qui sont
équivalent. Le nom est enfermé dans [= et =]. Par exemple, le nom e peut-être
utilisé pour représenter tous les « e », « ´ » et « ` ». Dans ce cas, [[=e=]] est un habitué
expression qui correspond à l'une des e, e'ou e`.

Ces fonctionnalités sont très utiles dans les régions non anglophones. Les fonctions de la bibliothèque
qui rester bouche bée utilise pour la correspondance d'expressions régulières ne reconnaît actuellement que le caractère POSIX
Des classes; ils ne reconnaissent pas les symboles d'assemblage ou les classes d'équivalence.

La \y, \B, \<, \>, \s, \S, \w, \W, \`et \' les opérateurs sont spécifiques à rester bouche bée; elles sont
extensions basées sur les fonctionnalités des bibliothèques d'expressions régulières GNU.

Les différentes options de la ligne de commande contrôlent comment rester bouche bée interprète les caractères de façon régulière
expressions.

Aucune option
Dans le cas par défaut, rester bouche bée fournit toutes les fonctionnalités des expressions régulières POSIX
et les opérateurs d'expressions régulières GNU décrits ci-dessus.

--posix
Seules les expressions régulières POSIX sont supportées, les opérateurs GNU ne sont pas spéciaux.
(Par exemple, \w correspond à un littéral w).

--traditionnel
UNIX traditionnel awk les expressions régulières sont mises en correspondance. Les opérateurs GNU ne sont pas
les expressions spéciales et d'intervalle ne sont pas disponibles. Caractères décrits par octal
et les séquences d'échappement hexadécimales sont traitées littéralement, même si elles représentent
métacaractères d'expressions régulières.

--re-intervalle
Autoriser les expressions d'intervalle dans les expressions régulières, même si --traditionnel a été
à condition de.

Actions
Les instructions d'action sont mises entre accolades, { et }. Les énoncés d'action se composent des
les instructions d'affectation, conditionnelles et en boucle trouvées dans la plupart des langues. Les opérateurs,
les instructions de contrôle et les instructions d'entrée/sortie disponibles sont calquées sur celles de C.

Les opérateurs
Les opérateurs dans AWK, par ordre de priorité décroissante, sont :

( ) regroupement

$ Référence de terrain.

++ -- Incrémenter et décrémenter, à la fois préfixe et suffixe.

^ Exponentation (** peut également être utilisé, et ** = pour l'opérateur d'affectation).

+ - ! Unaire plus, unaire moins et négation logique.

* / % Multiplication, division et module.

+ - Addition et soustraction.

espace Concaténation de chaînes.

| |& E/S canalisées pour obtenir la ligne, impressionet printf.

< > <= >= != ==
Les opérateurs relationnels réguliers.

~ !~ Correspondance d'expression régulière, correspondance niée. REMARQUE: Ne pas utiliser un régulier régulier
expression (/toto/) sur le côté gauche d'un ~ or !~. N'en utilisez qu'un sur le
du côté de la main droite. L'expression /toto/ ~ exp a le même sens que ((0 $ ~
/toto/) ~ exp). C'est habituellement ne sauraient ce que vous voulez.

in Appartenance au tableau.

&& ET logique.

|| OU logique.

?: L'expression conditionnelle C. Cela a la forme expression1 ? expression2 : expression3. Si
expression1 est vrai, la valeur de l'expression est expression2, sinon c'est expression3.
Un seul de expression2 et expression3 est évalué.

= += -= *= /= %= ^=
Mission. Les deux affectation absolue (var = Plus-value) et affectation opérateur
(les autres formes) sont pris en charge.

Control Déclarations
Les instructions de contrôle sont les suivantes :

if (condition) déclaration [ d'autre déclaration ]
tout en (condition) déclaration
do déclaration tout en (condition)
en (expression1; expression2; expression3) déclaration
en (var in tableau) déclaration
pause
continuer
effacer tableau[indice]
effacer tableau
sortie [ expression ]
{ déclarations }
interrupteur (expression) {
maisons Plus-value|regex : déclaration

[ par défaut: déclaration ]
}

I / O Déclarations
Les instructions d'entrée/sortie sont les suivantes :

proche(filet [, how]) Fermez le fichier, le tuyau ou le co-process. L'optionnel how devrait seulement être
utilisé lors de la fermeture d'une extrémité d'un tuyau bidirectionnel à un co-processus. Ce
doit être une valeur de chaîne, soit "à" or "de".

obtenir la ligne Ensemble $0 à partir de l'enregistrement d'entrée suivant ; ensemble NF, NR, RNR, RT.

obtenir la ligne <filet Ensemble $0 du prochain enregistrement de filet; ensemble NF, RT.

obtenir la ligne var Ensemble var à partir de l'enregistrement d'entrée suivant ; ensemble NR, RNR, RT.

obtenir la ligne var <filet Ensemble var du prochain enregistrement de filet, RT.

commander | obtenir la ligne [var]
Courir commander diriger la sortie soit dans $0 or var, comme ci-dessus, et
RT.

commander |& obtenir la ligne [var]
Courir commander en tant que co-processus canalisant la sortie soit dans $0 or var,
comme ci-dessus, et RT. Les co-processus sont un rester bouche bée extension. (commander vous
aussi être une prise. Voir la sous-section # Déposez votre dernière attestation Des noms, au dessous de.)

next Arrête le traitement de l'enregistrement d'entrée en cours. L'enregistrement d'entrée suivant est
la lecture et le traitement recommencent avec le premier motif dans l'AWK
programme. À la fin des données d'entrée, rester bouche bée exécute tout
FIN règles).

fichier suivant Arrête le traitement du fichier d'entrée actuel. Le prochain enregistrement d'entrée lu
vient du fichier d'entrée suivant. NOM DE FICHIER et ARGIND sont mis à jour,
RNR est remis à 1 et le traitement recommence avec le premier motif
dans le programme AWK. À la fin des données d'entrée, rester bouche bée
exécute tout FIN règles).

impression Imprimer l'enregistrement en cours. L'enregistrement de sortie se termine par le
valeur de ORS.

impression liste_expr Imprimez des expressions. Chaque expression est séparée par la valeur de
BSF. L'enregistrement de sortie se termine par la valeur de ORS.

impression liste_expr >filet Imprimer les expressions sur filet. Chaque expression est séparée par le
valeur de BSF. L'enregistrement de sortie se termine par la valeur de
ORS.

printf enfin, liste_expr Formater et imprimer. Voir La printf Déclaration, Ci-dessous.

printf enfin, liste_expr >filet
Formater et imprimer sur filet.

système(ligne de commande) Exécuter la commande ligne de commande, et renvoie l'état de sortie. (Ceci peut
ne sera pas disponible sur les systèmes non POSIX.)

fflux([filet]) Videz tous les tampons associés au fichier ou au tube de sortie ouvert filet.
If filet est manquant ou s'il s'agit de la chaîne nulle, alors videz tout ouvert
fichiers et tuyaux de sortie.

Des redirections de sortie supplémentaires sont autorisées pour impression et printf.

impression >> filet
Ajoute la sortie au filet.

impression | commander
Écrit sur un tuyau.

impression |& commander
Envoie des données à un co-processus ou à un socket. (Voir aussi la sous-section # Déposez votre dernière attestation Des noms,
au dessous de.)

La obtenir la ligne La commande renvoie 1 en cas de succès, 0 à la fin du fichier et -1 en cas d'erreur. Sur un
Erreur, ERREUR est défini sur une chaîne décrivant le problème.

REMARQUE: L'échec de l'ouverture d'un socket bidirectionnel entraîne le retour d'une erreur non fatale à
la fonction appelante. Si vous utilisez un tuyau, un coprocessus ou un socket pour obtenir la ligneOu de impression or
printf dans une boucle, vous must utilisé Fermer() pour créer de nouvelles instances de la commande ou
prise. AWK ne ferme pas automatiquement les tuyaux, les sockets ou les co-processus lorsqu'ils reviennent
EOF.

La printf Déclaration
Les versions AWK du printf déclaration et sprintf() fonction (voir ci-dessous) accepter le
formats de spécification de conversion suivants :

%c Un seul personnage. Si l'argument utilisé pour %c est numérique, il est traité comme un
caractère et imprimé. Sinon, l'argument est supposé être une chaîne et le
seul le premier caractère de cette chaîne est imprimé.

%d, %i Un nombre décimal (la partie entière).

%e, %E Un nombre à virgule flottante de la forme [-]d.dddddde[+-]ddL’ %E format utilise E
au lieu de e.

%f, %F Un nombre à virgule flottante de la forme [-]ddd.dddddd. Si la bibliothèque système prend en charge
il, %F est également disponible. C'est comme %f, mais utilise des majuscules pour les
valeurs "pas un nombre" et "infini". Si %F n'est pas disponible, rester bouche bée Usages %f.

%g, %G Utilisez %e or %f conversion, selon la plus courte, avec des zéros non significatifs
supprimé. Les %G format utilise %E au lieu de %e.

%o Un nombre octal non signé (également un entier).

%u Un nombre décimal non signé (encore une fois, un entier).

%s Une chaîne de caractères.

%x, %X Un nombre hexadécimal non signé (un entier). Les %X format utilise A B C D E F au lieu de
abcdef.

%% Un célibataire ou Individual % personnage; aucun argument n'est converti.

En option, des paramètres supplémentaires peuvent se situer entre le % et la lettre de contrôle :

compter$ Utilisez l'option compter'ème argument à ce stade de la mise en forme. C'est ce qu'on appelle un
positionnel spécificateur et est principalement destiné à être utilisé dans les versions traduites de
chaînes de format, pas dans le texte original d'un programme AWK. C'est un rester bouche bée
extension.

- L'expression doit être justifiée à gauche dans son champ.

espace Pour les conversions numériques, préfixez les valeurs positives avec un espace et les valeurs négatives
avec un signe moins.

+ Le signe plus, utilisé avant le modificateur de largeur (voir ci-dessous), indique de toujours fournir un
signe pour les conversions numériques, même si les données à formater sont positives. Les +
remplace le modificateur d'espace.

# Utilisez une « forme alternative » pour certaines lettres de contrôle. Pour %o, fournir un leader
zéro. Pour %xet %X, fournir un leader 0x or 0X pour un résultat non nul. Pour %e, %E,
%f et %F, le résultat contient toujours un point décimal. Pour %get %G, traînant
les zéros ne sont pas supprimés du résultat.

0 Un leader 0 (zéro) agit comme un indicateur, qui indique que la sortie doit être complétée avec
des zéros au lieu d'espaces. Cela s'applique uniquement aux formats de sortie numériques. Cette
flag n'a d'effet que lorsque la largeur du champ est plus large que la valeur à imprimer.

' Un guillemet simple indique rester bouche bée pour insérer le séparateur de milliers de la locale
caractère en nombres décimaux, et d'utiliser également la virgule décimale de la locale
caractère avec des formats à virgule flottante. Cela nécessite une prise en charge correcte des paramètres régionaux dans le
bibliothèque C et dans la définition de la locale courante.

largeur Le champ doit être rempli à cette largeur. Le champ est normalement rempli de
les espaces. Avec le 0 flag, il est rempli de zéros.

.prec Un nombre qui spécifie la précision à utiliser lors de l'impression. Pour le %e, %E, %f et
%F, formats, ceci spécifie le nombre de chiffres que vous voulez imprimer à droite de
la virgule décimale. Pour le %get %G formats, il spécifie le nombre maximum de
chiffres significatifs. Pour le %d, %i, %o, %u, %xet %X formats, il précise le
nombre minimum de chiffres à imprimer. Pour %s, il spécifie le nombre maximum de
caractères de la chaîne à imprimer.

La dynamique largeur et prec capacités de l'ISO C printf () les routines sont prises en charge. UNE *
à la place soit du largeur or prec spécifications fait que leurs valeurs sont extraites de
la liste d'arguments à printf or sprintf(). Pour utiliser un spécificateur positionnel avec une dynamique
largeur ou précision, fournir le compter$ après le * dans la chaîne de format. Par exemple,
"%3$*2$.*1$s".

# Déposez votre dernière attestation Des noms
Lorsque vous effectuez une redirection d'E/S à partir de impression or printf dans un fichier, ou via obtenir la ligne d'un
fichier, rester bouche bée reconnaît certains noms de fichiers spéciaux en interne. Ces noms de fichiers permettent d'accéder
pour ouvrir les descripteurs de fichiers hérités de rester bouche béeprocessus parent de (généralement le shell). Ces
les noms de fichiers peuvent également être utilisés sur la ligne de commande pour nommer les fichiers de données. Les noms de fichiers sont :

- L'entrée standard.

/dev/stdin L'entrée standard.

/dev/stdout La sortie standard.

/dev/stder La sortie d'erreur standard.

/dev/fd/n Le fichier associé au descripteur de fichier ouvert n.

Ceux-ci sont particulièrement utiles pour les messages d'erreur. Par exemple:

impression "Vous soufflé ce!" > "/dev/stder"

alors que vous auriez autrement à utiliser

impression "Vous soufflé ce!" | "chat 1>&2"

Les noms de fichiers spéciaux suivants peuvent être utilisés avec le |& opérateur de co-process pour la création
Connexions réseau TCP/IP :

/inet/tcp/importation/hôte/rapport
/inet4/tcp/importation/hôte/rapport
/inet6/tcp/importation/hôte/rapport
Fichiers pour une connexion TCP/IP sur le port local importation à l'hôte distant hôte à distance
port rapport. Utiliser un port de 0 pour que le système sélectionne un port. Utilisation /inet4 à forcer
une connexion IPv4, et /inet6 pour forcer une connexion IPv6. Plaine /inet utilise l'
par défaut du système (probablement IPv4).

/inet/udp/importation/hôte/rapport
/inet4/udp/importation/hôte/rapport
/inet6/udp/importation/hôte/rapport
Similaire, mais utilisez UDP/IP au lieu de TCP/IP.

Numérique Les fonctions
AWK possède les fonctions arithmétiques intégrées suivantes :

atan2(y, x) Renvoie l'arc tangente de y / x en radians.

cos (expr) Renvoie le cosinus de expr, qui est en radians.

exp (expr) La fonction exponentielle.

int (expr) Tronquer en entier.

Journal(expr) La fonction logarithme népérien.

rand () Renvoyer un nombre aléatoire N, entre 0 et 1, tel que 0 N <1.

péché(expr) Retourne le sinus de expr, qui est en radians.

carré(expr) Renvoie la racine carrée de expr.

srand([expr]) Utilisez expr comme nouvelle graine pour le générateur de nombres aléatoires. Sinon expr is
fourni, utilisez l'heure de la journée. Retourne la graine précédente pour le hasard
générateur de nombres.

Chaîne Les fonctions
Gawk a les fonctions de chaîne intégrées suivantes :

un tri(s [, d [, how] ]) Renvoie le nombre d'éléments dans le tableau source s. Trier le
contenu de s en utilisant rester bouche béeles règles normales de comparaison des valeurs, et
remplacer les indices des valeurs triées s avec séquentiel
entiers commençant par 1. Si le tableau de destination facultatif d is
spécifié, premier doublon s développement d, puis trier d, quittant le
indices du tableau source s inchangé. La chaîne facultative how
contrôle la direction et le mode de comparaison. Valeurs valides pour
how sont l'une des chaînes valides pour PROCINFO["sorted_in"]. Il
peut également être le nom d'une fonction de comparaison définie par l'utilisateur comme
décrit dans PROCINFO["sorted_in"].

assorti(s [, d [, how] ])
Renvoie le nombre d'éléments dans le tableau source s. Le comportement
est le même que celui de un tri(), sauf que le tableau indices
utilisé pour le tri, pas les valeurs du tableau. Une fois terminé, le tableau est
indexé numériquement, et les valeurs sont celles de l'original
indices. Les valeurs d'origine sont perdues ; ainsi fournir une seconde
tableau si vous souhaitez conserver l'original. Le but de la
chaîne facultative how est le même que celui décrit dans un tri() au dessus.

gensub(r, s, h [, t]) Rechercher la chaîne cible t pour les correspondances de l'expression régulière
r. Si h est une chaîne commençant par g or G, puis remplacez tout
matchs de r avec s. Autrement, h est un nombre indiquant quel
match de r remplacer. Si t n'est pas fourni, utilisez $0 à la place.
Dans le texte de remplacement s, la séquence \n, Où n est un chiffre
de 1 à 9, peut être utilisé pour indiquer uniquement le texte qui correspond
le n'ième sous-expression entre parenthèses. La séquence \0 représente
l'intégralité du texte apparié, de même que le caractère &. contrairement à sous()
et gsub(), la chaîne modifiée est renvoyée comme résultat de la
fonction, et la chaîne cible d'origine est ne sauraient changé.

gsub(r, s [, t]) Pour chaque sous-chaîne correspondant à l'expression régulière r dans la chaîne
t, remplacez la chaîne s, et renvoie le nombre de
remplacements. Si t n'est pas fourni, utilisez $0. Un & dans l'
le texte de remplacement est remplacé par le texte qui était réellement
assorti. Utilisation \& pour obtenir un littéral &. (Ceci doit être tapé comme
"\\&"; voir RESTER BOUCHE BÉE: Efficace AWK Programmation pour une discussion plus approfondie
des règles pour &et des barres obliques inverses dans le texte de remplacement de
sous(), gsub()et gensub().)

indice(s, t) Renvoie l'index de la chaîne t dans la chaîne s, ou 0 si t n'est pas
présent. (Cela implique que les index des caractères commencent à un.) Il
est une erreur fatale d'utiliser une constante regexp pour t.

longueur([s]) Renvoie la longueur de la chaîne s, ou la longueur de $0 if s n'est pas
fourni. En tant qu'extension non standard, avec un argument de tableau,
longueur() renvoie le nombre d'éléments du tableau.

rencontre(s, r [, a]) Retourner la position dans s où l'expression régulière r se produit, ou
0 si r n'est pas présent et définissez les valeurs de DÉMARRER et LONGUEUR.
Notez que l'ordre des arguments est le même que pour le ~ opérateur:
str ~ re. Si tableau a est fourni, a est effacé, puis les éléments
1 à travers n sont remplis des portions de s qui correspondent au
sous-expression entre parenthèses correspondante dans r. Le 0' élément
of a contient la partie de s égalé par l'ensemble régulier
expression r. Indices a[n, "début"]et a[n, "longueur"]
fournir l'index de départ dans la chaîne et la longueur respectivement,
de chaque sous-chaîne correspondante.

patsplit(s, a [, r [, sep] ])
Diviser la chaîne s dans le tableau a et le tableau des séparateurs sep
sur l'expression régulière r, et renvoie le nombre de champs.
Les valeurs des éléments sont les portions de s qui correspondait r. La valeur de
sep[i] est le séparateur qui est apparu devant a[i+ 1]. Si r
est omis, FPAT est utilisé à la place. Les tableaux a et sep
effacé en premier. Le fractionnement se comporte de la même manière que le fractionnement des champs
avec FPAT, décrit ci-dessus.

diviser(s, a [, r [, sep] ])
Diviser la chaîne s dans le tableau a et le tableau des séparateurs sep
sur l'expression régulière r, et renvoie le nombre de champs. Si
r est omis, FS est utilisé à la place. Les tableaux a et sep
effacé en premier. sep[i] est le séparateur de champs auquel correspond r
jusqu'à XNUMX fois a[i] et a[i+ 1]. Si r est un espace unique, alors menant
espace dans s va dans l'élément de tableau supplémentaire sep[0] et
l'espace de fin va dans l'élément de tableau supplémentaire sep[n],
De n est la valeur de retour de diviser(s, a, r, sep). Scission
se comporte de manière identique à la division de champ, décrite ci-dessus.

sprintf (fmt, liste_expr) Commercial liste_expr selon fmt, et renvoie la chaîne résultante.

strtonum(str) Examiner str, et renvoie sa valeur numérique. Si str commence par un
conduisant 0, traitez-le comme un nombre octal. Si str commence par un
conduisant 0x or 0X, traitez-le comme un nombre hexadécimal. Autrement,
supposons qu'il s'agit d'un nombre décimal.

sous(r, s [, t]) Tout comme gsub(), mais remplacez uniquement la première sous-chaîne correspondante.

sous-str(s, i [, n]) Renvoyez le maximum n-sous-chaîne de caractères de s à partir de i. Si n
est omis, utilisez le reste de s.

baisser(str) Renvoie une copie de la chaîne str, avec tous les caractères majuscules
in str traduits en leurs équivalents en minuscules correspondants.
Les caractères non alphabétiques restent inchangés.

toupie(str) Renvoie une copie de la chaîne str, avec tous les caractères minuscules
in str traduits en leurs équivalents majuscules correspondants.
Les caractères non alphabétiques restent inchangés.

Gawk est multi-octets. Cela signifie que indice(), longueur(), substr () et rencontre() tout le travail
en termes de caractères, pas d'octets.

Time Freak Les fonctions
Étant donné que l'une des principales utilisations des programmes AWK est le traitement des fichiers journaux contenant l'heure
informations de cachet, rester bouche bée fournit les fonctions suivantes pour obtenir des horodatages et
les formater.

mktime(spécdate)
Tourner spécdate dans un horodatage de la même forme que celui renvoyé par système()et
retourner le résultat. Les spécdate est une chaîne de la forme AAAA MM DD HH MM SS[
heure d'été]. Le contenu de la chaîne est composé de six ou sept nombres représentant
respectivement l'année complète y compris le siècle, le mois de 1 à 12, le jour de
le mois de 1 à 31, l'heure du jour de 0 à 23, la minute de 0 à
59, le second de 0 à 60, et un indicateur d'heure d'été en option. Les valeurs
de ces nombres n'ont pas besoin d'être dans les plages spécifiées ; par exemple, une heure
de -1 signifie 1 heure avant minuit. Le calendrier grégorien d'origine zéro est
supposé, avec l'année 0 précédant l'année 1 et l'année -1 précédant l'année 0. Le temps est
supposé être dans le fuseau horaire local. Si l'indicateur d'heure d'été est positif,
l'heure est supposée être l'heure d'été ; si zéro, le temps est supposé
être à l'heure normale ; et si négatif (valeur par défaut), mktime () tente de déterminer
si l'heure d'été est en vigueur pour l'heure spécifiée. Si spécdate
ne contient pas assez d'éléments ou si le temps résultant est hors limites,
mktime () renvoie -1.

strftime([le format [, horodatage[, drapeau utc]]])
Format horodatage selon les spécifications de le format. Si drapeau utc is
présent et est non nul ou non nul, le résultat est en UTC, sinon le résultat
est à l'heure locale. Les horodatage doit être de la même forme que celle renvoyée par
système(). Si horodatage est manquant, l'heure actuelle est utilisée. Si le format
est manquant, un format par défaut équivalent à la sortie de données(1) est utilisé. Les
le format par défaut est disponible dans PROCINFO["strftime"]. Voir les spécifications pour
le strftime() fonction en ISO C pour les conversions de format qui sont garanties
être disponible.

système() Renvoie l'heure actuelle en nombre de secondes depuis l'époque
(1970-01-01 00:00:00 UTC sur les systèmes POSIX).

Bit Manipulations Les fonctions
Gawk fournit les fonctions de manipulation de bits suivantes. Ils fonctionnent en convertissant double-
valeurs à virgule flottante de précision à uintmax_t entiers, faire l'opération, puis
convertir le résultat en virgule flottante. Les fonctions sont :

et(v1, v2 [,...]) Renvoie le AND au niveau du bit des valeurs fournies dans la liste d'arguments.
Il doit y en avoir au moins deux.

complet(vague) Renvoie le complément au niveau du bit de vague.

lshift(vague, compter) Renvoie la valeur de vague, décalé à gauche de compter morceaux.

ou(v1, v2 [,...]) Renvoie le OU au niveau du bit des valeurs fournies dans la liste d'arguments.
Il doit y en avoir au moins deux.

rshift(vague, compter) Renvoie la valeur de vague, décalé à droite de compter morceaux.

xor(v1, v2 [,...]) Renvoie le XOR bit à bit des valeurs fournies dans la liste d'arguments.
Il doit y en avoir au moins deux.

Type Fonction
La fonction suivante est à utiliser avec des tableaux multidimensionnels.

estun tableau(x)
Renvoie vrai si x est un tableau, faux sinon.

Internationalisation Les fonctions
Les fonctions suivantes peuvent être utilisées à partir de votre programme AWK pour traduire des chaînes
à l'exécution. Pour tous les détails, voir RESTER BOUCHE BÉE: Efficace AWK Programmation.

domainetexte lié(annuaire [, domaine])
Spécifiez le répertoire où rester bouche bée cherche le .organisme génétiquement modifié fichiers, au cas où ils ne le feraient pas ou
ne peut pas être placé dans les emplacements ``standard'' (par exemple, pendant les tests). ça revient
le répertoire où domaine est « lié ».
Le défaut domaine est la valeur de DOMAINETEXTE. Si annuaire est la chaîne nulle
(""), puis liaisontextdomain() renvoie la liaison actuelle pour le donné domaine.

dcgettext(un magnifique [, domaine [, category]])
Renvoyez la traduction de un magnifique dans le domaine du texte domaine pour la catégorie locale
category. La valeur par défaut pour domaine est la valeur actuelle de DOMAINETEXTEL’
valeur par défaut pour category is "LC_MESSAGES".
Si vous fournissez une valeur pour category, il doit s'agir d'une chaîne égale à l'une des
catégories de paramètres régionaux décrites dans RESTER BOUCHE BÉE: Efficace AWK Programmation. Vous devez également
fournir un domaine de texte. Utilisation DOMAINETEXTE si vous souhaitez utiliser le domaine actuel.

dcngettext(string1, string2, nombre [, domaine [, category]])
Renvoie le pluriel utilisé pour nombre de la traduction de string1 et string2 in
domaine de texte domaine pour la catégorie locale category. La valeur par défaut pour domaine is
la valeur actuelle de DOMAINETEXTE. La valeur par défaut pour category is "LC_MESSAGES".
Si vous fournissez une valeur pour category, il doit s'agir d'une chaîne égale à l'une des
catégories de paramètres régionaux décrites dans RESTER BOUCHE BÉE: Efficace AWK Programmation. Vous devez également
fournir un domaine de texte. Utilisation DOMAINETEXTE si vous souhaitez utiliser le domaine actuel.

DÉFINI PAR L'UTILISATEUR FONCTIONS


Les fonctions dans AWK sont définies comme suit :

fonction prénom(paramètre liste) { déclarations }

Les fonctions sont exécutées lorsqu'elles sont appelées à partir d'expressions dans des modèles ou
Actions. Les paramètres réels fournis dans l'appel de fonction sont utilisés pour instancier le
paramètres formels déclarés dans la fonction. Les tableaux sont passés par référence, d'autres
les variables sont passées par valeur.

Étant donné que les fonctions ne faisaient pas à l'origine partie du langage AWK, la disposition relative aux
variables est assez maladroit : elles sont déclarées comme paramètres supplémentaires dans la liste des paramètres.
La convention est de séparer les variables locales des paramètres réels par des espaces supplémentaires dans le
liste de paramètres. Par exemple:

fonction f(p, q, a, b) # a et b locales
{

}

/abc/ { ; f(1, 2) ; }

La parenthèse gauche dans un appel de fonction est nécessaire pour suivre immédiatement la fonction
nom, sans aucun espace intermédiaire. Cela évite une ambiguïté syntaxique avec le
opérateur de concaténation. Cette restriction ne s'applique pas aux fonctions intégrées répertoriées
au dessus.

Les fonctions peuvent s'appeler et peuvent être récursives. Paramètres de fonction utilisés comme locaux
les variables sont initialisées à la chaîne nulle et au nombre zéro lors de l'invocation de la fonction.

Utilisez retourner expr pour renvoyer une valeur d'une fonction. La valeur de retour est indéfinie si non
valeur est fournie, ou si la fonction retourne en « tombant » la fin.

Comme étant une entreprise rester bouche bée extension, les fonctions peuvent être appelées indirectement. Pour ce faire, attribuez le nom de
la fonction à appeler, sous forme de chaîne, à une variable. Ensuite, utilisez la variable comme si elle
étaient le nom d'une fonction, précédé d'un @ signe, comme ceci :
fonction mafonction()
{
impression "myfunc appelé"

}

{
le_func = "myfunc"
@the_func() # Appelez-nous à travers le_func à ma fonction

}
Depuis la version 4.1.2, cela fonctionne avec des fonctions définies par l'utilisateur, des fonctions intégrées et
fonctions d'extension.

If --peluche a été fourni, rester bouche bée avertit des appels à des fonctions non définies au moment de l'analyse,
au lieu d'au moment de l'exécution. L'appel d'une fonction non définie au moment de l'exécution est une erreur fatale.

Le mot fonction peut être utilisé à la place de fonction, bien que cela soit obsolète.

DYNAMIQUEMENT CHARGEMENT NOUVEAU FONCTIONS


Vous pouvez ajouter dynamiquement de nouvelles fonctions intégrées à la course rester bouche bée interprète avec le
@charge déclaration. Les détails complets dépassent le cadre de cette page de manuel ; voir RESTER BOUCHE BÉE:
Efficace AWK Programmation.

SIGNAUX


La rester bouche bée le profileur accepte deux signaux. SIGUSR1 provoque le vidage d'un profil et d'une fonction
pile d'appels au fichier de profil, qui est soit awkprof.out, ou quel que soit le fichier a été nommé
les --profil option. Il continue ensuite à fonctionner. VUE D'ENSEMBLE les causes rester bouche bée jeter le
pile d'appels de profil et de fonction, puis quittez.

INTERNATIONALISATION


Les constantes de chaîne sont des séquences de caractères entourées de guillemets doubles. En non anglais
environnements parlants, il est possible de marquer des chaînes dans le programme AWK comme nécessitant
traduction dans la langue naturelle locale. De telles chaînes sont marquées dans le programme AWK avec
un trait de soulignement ("_"). Par exemple,

rester bouche bée 'COMMENCER { impression "Bonjour, monde" }'

imprime toujours Salut, world. Mais,

rester bouche bée 'COMMENCER { impression _"Bonjour, monde" }'

pourrait imprimer Bonjour, monde en France.

Il y a plusieurs étapes impliquées dans la production et l'exécution d'un programme AWK localisable.

1. Ajouter un COMMENCER action pour attribuer une valeur au DOMAINETEXTE variable pour définir le domaine de texte
à un nom associé à votre programme :

COMMENCER { DOMAINETEXTE = "monprog" }

Ceci permet rester bouche bée pour trouver le .organisme génétiquement modifié fichier associé à votre programme. Sans cela
étape, rester bouche bée utilise l' messages domaine de texte, qui ne contient probablement pas de traductions
pour votre programme.

2. Marquez toutes les chaînes qui doivent être traduites avec des traits de soulignement en tête.

3. Si nécessaire, utilisez le dcgettext() (facultatif) liaisontextdomain() fonctions dans votre programme,
selon le cas.

4. course rester bouche bée --gen-pot -f monprog.awk > monprog.pot pour générer un .pot fichier pour votre
.

5. Fournissez les traductions appropriées, puis créez et installez les .organisme génétiquement modifié fichiers.

Les fonctionnalités d'internationalisation sont décrites en détail dans RESTER BOUCHE BÉE: Efficace AWK
Programmation.

POSIX COMPATIBILITÉ


Un objectif primordial pour rester bouche bée est la compatibilité avec le standard POSIX, ainsi qu'avec le
dernière version de Brian Kernighan awk. À cette fin, rester bouche bée intègre ce qui suit
fonctionnalités visibles par l'utilisateur qui ne sont pas décrites dans le livre AWK, mais font partie du Brian
La version de Kernighan de awk, et sont dans la norme POSIX.

Le livre indique que l'affectation de variable de ligne de commande se produit lorsque awk serait autrement
ouvrez l'argument en tant que fichier, qui est après le COMMENCER la règle est exécutée. Cependant, dans
implémentations antérieures, lorsqu'une telle affectation apparaissait avant tout nom de fichier, le
l'affectation aurait lieu before le COMMENCER la règle a été exécutée. Les candidatures en sont venues à dépendre de
cette fonctionnalité." Lorsque awk a été modifié pour correspondre à sa documentation, le -v possibilité pour
l'attribution de variables avant l'exécution du programme a été ajoutée pour s'adapter aux applications qui
dépendait de l'ancien comportement. (Cette caractéristique a été acceptée à la fois par le Bell
Les laboratoires et les développeurs GNU.)

Lors du traitement des arguments, rester bouche bée utilise l'option spéciale "--" pour signaler la fin de
arguments. En mode de compatibilité, il avertit mais ignore les options non définies.
En fonctionnement normal, ces arguments sont transmis au programme AWK pour qu'il les traite.

Le livre AWK ne définit pas la valeur de retour de srand(). La norme POSIX l'a
retourner la graine qu'il utilisait, pour permettre de garder une trace des séquences de nombres aléatoires.
Donc srand() in rester bouche bée renvoie également sa graine actuelle.

Les autres nouvelles fonctionnalités sont : L'utilisation de plusieurs -f options (de MKS awk); la ENVIRONNEMENT tableau;
le \aet \v séquences d'échappement (faites à l'origine dans rester bouche bée et réintroduit dans la cloche
version laboratoires); les baisser() et topper() fonctions intégrées (de Bell
version laboratoires); et les spécifications de conversion ISO C dans printf (fait en premier dans
la version des Laboratoires Bell).

HISTORIQUE CARACTERISTIQUES


Il y a une caractéristique des implémentations historiques d'AWK qui rester bouche bée prend en charge : il est possible
appeler le longueur() fonction intégrée non seulement sans argument, mais même sans
parenthèses ! Ainsi,

a = longueur # Saint Algol 60 Homme chauve-souris!

est le même que l'un ou l'autre de

a = longueur()
a = longueur($0)

L'utilisation de cette fonctionnalité est une mauvaise pratique, et rester bouche bée émet un avertissement concernant son utilisation si --peluche is
spécifié sur la ligne de commande.

GNU EXTENSIONS


Gawk a un trop grand nombre d'extensions à POSIX awk. Ils sont décrits dans ce
section. Toutes les extensions décrites ici peuvent être désactivées en appelant rester bouche bée les
--traditionnel or --posix options.

Les caractéristiques suivantes de rester bouche bée ne sont pas disponibles dans POSIX awk.

· Aucune recherche de chemin n'est effectuée pour les fichiers nommés via le -f option. Par conséquent, la CHEMIN AWKP
La variable d'environnement n'est pas spéciale.

· Il n'y a pas de possibilité de faire l'inclusion de fichiers (rester bouche bée's @comprendre mécanisme).

· Il n'y a pas de possibilité d'ajouter dynamiquement de nouvelles fonctions écrites en C (rester bouche bée's @charge
mécanisme).

· Le \x séquence d'échappement. (Désactivé avec --posix.)

· La possibilité de continuer les lignes après ? et :. (Désactivé avec --posix.)

· Constantes octales et hexadécimales dans les programmes AWK.

· Le ARGIND, MODE BIN, ERREUR, PELUCHE, RT et DOMAINETEXTE les variables ne sont pas spéciales.

· Le IGNORECASSE variable et ses effets secondaires ne sont pas disponibles.

· Le LARGEURS DE CHAMP fractionnement des champs à largeur variable et fixe.

· Le FPAT fractionnement des variables et des champs en fonction des valeurs des champs.

· Le PROCINFO le tableau n'est pas disponible.

· L'utilisation de RS comme expression régulière.

· Les noms de fichiers spéciaux disponibles pour la redirection d'E/S ne sont pas reconnus.

· Le |& opérateur de création de co-processus.

· Le FICHIERDEBUT et FICHIER FIN les modèles spéciaux ne sont pas disponibles.

· La possibilité de séparer les caractères individuels en utilisant la chaîne nulle comme valeur de FS,
et comme troisième argument diviser().

· Un quatrième argument optionnel pour diviser() pour recevoir les textes de séparation.

· Le deuxième argument optionnel du Fermer() la fonction.

· Le troisième argument facultatif de la rencontre() la fonction.

· La possibilité d'utiliser des spécificateurs positionnels avec printf et sprintf().

· La possibilité de passer un tableau à longueur().

· Le et(), un tri(), asorti(), liaisontextdomain(), compl(), dcgettext(), dcngettext(),
gensub(), lshift(), mktime (), ou(), patsplit(), rshift(), strftime(), strtonum(),
système() et xor() fonctions.

· Chaînes localisables.

Le livre AWK ne définit pas la valeur de retour du Fermer() la fonction. Gawk's Fermer()
renvoie la valeur de fermer(3), ou fermer(3), lors de la fermeture d'un fichier ou d'un tube de sortie,
respectivement. Il renvoie l'état de sortie du processus lors de la fermeture d'un canal d'entrée. Les
la valeur de retour est -1 si le fichier, le tube ou le co-process nommé n'a pas été ouvert avec un
réorientation.

Quand rester bouche bée est invoqué avec le --traditionnel option, si le fs argument à la -F option est
"t", alors FS est défini sur le caractère de tabulation. Notez que taper rester bouche bée -F\t provoque simplement
le shell pour citer le " t " et ne passe pas " \ t " au -F option. Puisqu'il s'agit d'un
cas particulier assez moche, ce n'est pas le comportement par défaut. Ce comportement ne
se produire si --posix a été précisé. Pour vraiment obtenir un caractère de tabulation comme champ
séparateur, il est préférable d'utiliser des guillemets simples : rester bouche bée -F'\t' .

ENVIRONNEMENT VARIABLES


La CHEMIN AWKP La variable d'environnement peut être utilisée pour fournir une liste de répertoires qui rester bouche bée
recherche lors de la recherche de fichiers nommés via le -f, --déposer, -i et --comprendre options. Si
la recherche initiale échoue, le chemin est à nouveau recherché après l'ajout .awk au nom de fichier.

La CHEMIN AWKLIBP La variable d'environnement peut être utilisée pour fournir une liste de répertoires qui rester bouche bée
recherche lors de la recherche de fichiers nommés via le -l et --charge options.

La GAWK_READ_TIMEOUT La variable d'environnement peut être utilisée pour spécifier un délai d'attente dans
millisecondes pour lire l'entrée d'un terminal, d'un tuyau ou d'une communication bidirectionnelle, y compris
prises.

Pour la connexion à un hôte distant via socket, GAWK_SOCK_RETRIES contrôle le nombre de
tentatives, et GAWK_MSEC_SLEEP et l'intervalle entre les tentatives. L'intervalle est dans
millisecondes. Sur les systèmes qui ne prennent pas en charge tu dors(3), la valeur est arrondie à un
nombre entier de secondes.

If POSIXLY_CORRECT existe dans l'environnement, alors rester bouche bée se comporte exactement comme si --posix ait eu
été spécifié sur la ligne de commande. Si --peluche a été spécifié, rester bouche bée émet un avertissement
message à cet effet.

EXIT STATUT


Si la sortie l'instruction est utilisée avec une valeur, alors rester bouche bée sort avec la valeur numérique donnée
à elle.

Sinon, s'il n'y a eu aucun problème lors de l'exécution, rester bouche bée sort avec la valeur du C
constant EXIT_SUCCESS. C'est généralement zéro.

Si une erreur se produit, rester bouche bée sort avec la valeur de la constante C EXIT_FAILURE. C'est
généralement un.

If rester bouche bée quitte à cause d'une erreur fatale, l'état de sortie est 2. Sur les systèmes non POSIX, ce
la valeur peut être mappée sur EXIT_FAILURE.

VERSION INFORMATION


Cette page de manuel documente rester bouche bée, La version 4.1.

AUTEURS


La version originale d'UNIX awk a été conçu et mis en œuvre par Alfred Aho, Peter
Weinberger et Brian Kernighan des Laboratoires Bell. Brian Kernighan continue de
l'entretenir et l'améliorer.

Paul Rubin et Jay Fenlason, de la Free Software Foundation, ont écrit rester bouche bée, être compatible
avec la version originale de awk distribué en septième édition UNIX. John Woods
contribué à un certain nombre de corrections de bogues. David Trueman, avec des contributions d'Arnold Robbins,
LES PLANTES rester bouche bée compatible avec la nouvelle version d'UNIX awk. Arnold Robbins est le courant
mainteneur.

See RESTER BOUCHE BÉE: Efficace AWK Programmation pour une liste complète des contributeurs à rester bouche bée et le
Documentation.

Voir le README déposer dans le rester bouche bée distribution d'informations à jour sur les responsables
et quels ports sont actuellement pris en charge.

PUNAISE RAPPORTS


Si vous trouvez un bug dans rester bouche bée, veuillez envoyer un courrier électronique à [email protected]. S'il vous plaît
inclure votre système d'exploitation et sa révision, la version de rester bouche bée (Partir rester bouche bée --version),
quel compilateur C vous avez utilisé pour le compiler, et un programme de test et des données aussi petites que
possible de reproduire le problème.

Avant d'envoyer un rapport de bogue, veuillez procéder comme suit. Tout d'abord, vérifiez que vous avez
la dernière version de rester bouche bée. De nombreux bugs (généralement subtils) sont corrigés à chaque version,
et si le vôtre est obsolète, le problème a peut-être déjà été résolu. Deuxièmement, s'il vous plaît voir
si vous définissez la variable d'environnement LC_TOUS à LC_ALL=C fait que les choses se comportent comme vous
attendre. Si c'est le cas, il s'agit d'un problème de localisation, et il peut s'agir ou non d'un bogue. Enfin, s'il vous plaît
lisez attentivement cette page de manuel et le manuel de référence pour être sûr que ce que vous pensez est un
bug est vraiment, au lieu d'une simple bizarrerie dans la langue.

Quoi que tu fasses, fais ne pas publier un rapport de bogue dans comp.lang.awk. Alors que le rester bouche bée mobiles
lisez occasionnellement ce groupe de discussion, en publiant des rapports de bogues, il existe un moyen peu fiable de signaler
Bugs. Veuillez plutôt utiliser les adresses de courrier électronique indiquées ci-dessus. Vraiment.

Si vous utilisez un système basé sur GNU/Linux ou BSD, vous pouvez soumettre un rapport de bogue à
le fournisseur de votre distribution. C'est bien, mais s'il vous plaît envoyez une copie au fonctionnaire
adresse e-mail également, car il n'y a aucune garantie que le rapport de bogue sera transmis à
le rester bouche bée mainteneur.

Utilisez gawk en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad