mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-08-07 07:16:42 +02:00
shorten overly long lines
Following the recommendation to not exceed 80 characters/line.
This commit is contained in:
@@ -10,13 +10,19 @@ lang: fr-fr
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
AWK est un outil standard présent dans chaque système UNIX conforme aux normes POSIX.
|
AWK est un outil standard présent dans chaque système UNIX conforme aux normes
|
||||||
C’est un outil en ligne de commande qui ressemble au Perl et qui est excellent dans les tâches de traitement de fichiers texte.
|
POSIX. C’est un outil en ligne de commande qui ressemble au Perl et qui est
|
||||||
Vous pouvez l’appeler à partir d’un script shell, ou l’utiliser comme un langage de script autonome.
|
excellent dans les tâches de traitement de fichiers texte.
|
||||||
|
Vous pouvez l’appeler à partir d’un script shell, ou l’utiliser comme un langage
|
||||||
|
de script autonome.
|
||||||
|
|
||||||
Pourquoi utiliser AWK au lieu du langage Perl ?
|
Pourquoi utiliser AWK au lieu du langage Perl ?
|
||||||
Principalement, car AWK fait partie d'UNIX et est donc présent par défaut sur une très grande partie des systèmes d'exploitation UNIX et Linux.
|
Principalement, car AWK fait partie d'UNIX et est donc présent par défaut sur
|
||||||
AWK est aussi plus facile à lire que le langage Perl ; et est l'outil idéal pour ce qui concerne le traitement de texte simple. Notamment le traitement de ceux qui necéssitent de lire des fichiers ligne par ligne ; chaque ligne comportant des champs séparés par des délimiteur.
|
une très grande partie des systèmes d'exploitation UNIX et Linux.
|
||||||
|
AWK est aussi plus facile à lire que le langage Perl ; et est l'outil idéal pour
|
||||||
|
ce qui concerne le traitement de texte simple. Notamment le traitement de ceux
|
||||||
|
qui nécessitent de lire des fichiers ligne par ligne ; chaque ligne comportant
|
||||||
|
des champs séparés par des délimiteur.
|
||||||
|
|
||||||
|
|
||||||
```awk
|
```awk
|
||||||
@@ -30,17 +36,25 @@ règle1 { action; }
|
|||||||
règle2 { action; }
|
règle2 { action; }
|
||||||
|
|
||||||
# AWK lit et analyse automatiquement chaque ligne de chaque fichier fourni.
|
# AWK lit et analyse automatiquement chaque ligne de chaque fichier fourni.
|
||||||
# Chaque ligne est divisée par un délimiteur FS qui est par défaut l'espace (plusieurs espaces ou une tabulation comptent pour un espace). Ce délimiteur peut être changer grâce à l'option -F ou être renseigné au début d'un bloc (exemple: FS = " ").
|
# Chaque ligne est divisée par un délimiteur FS qui est par défaut l'espace
|
||||||
|
# (plusieurs espaces ou une tabulation comptent pour un espace). Ce délimiteur
|
||||||
|
# peut être changer grâce à l'option -F ou être renseigné au début d'un bloc
|
||||||
|
# (exemple: FS = " ").
|
||||||
|
|
||||||
# BEGIN est une règle spécifique exécutée au début du programme. C'est à cet endroit que vous mettrez tout le code à exécuter avant de traiter les fichiers texte. Si vous ne disposez pas de fichiers texte, considérez BEGIN comme le point d’entrée principal du script.
|
# BEGIN est une règle spécifique exécutée au début du programme. C'est à cet
|
||||||
# A l'opposé de BEGIN, il existe la règle END. Cette règle est présente après chaque fin de fichier (EOF : End Of File).
|
# endroit que vous mettrez tout le code à exécuter avant de traiter les fichiers
|
||||||
|
# texte. Si vous ne disposez pas de fichiers texte, considérez BEGIN comme le
|
||||||
|
# point d’entrée principal du script.
|
||||||
|
# A l'opposé de BEGIN, il existe la règle END. Cette règle est présente après
|
||||||
|
#chaque fin de fichier (EOF : End Of File).
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
|
|
||||||
# Les variables sont globales. Pas besoin de les déclarer.
|
# Les variables sont globales. Pas besoin de les déclarer.
|
||||||
count = 0;
|
count = 0;
|
||||||
|
|
||||||
# les opérateurs sont identiques au langage C et aux langages similaires (exemple: C#, C++)
|
# les opérateurs sont identiques au langage C et aux langages similaires
|
||||||
|
# (telsque C#, C++, etc.)
|
||||||
a = count + 1; # addition
|
a = count + 1; # addition
|
||||||
b = count - 1; # soustraction
|
b = count - 1; # soustraction
|
||||||
c = count * 1; # multiplication
|
c = count * 1; # multiplication
|
||||||
@@ -74,7 +88,8 @@ BEGIN {
|
|||||||
|
|
||||||
# Les blocs sont composés d'une multitude de lignes entre accolades
|
# Les blocs sont composés d'une multitude de lignes entre accolades
|
||||||
while (a < 10) {
|
while (a < 10) {
|
||||||
print "La concaténation de chaînes de caractères" " se fait avec des séries de chaînes " " séparées par des espaces";
|
print "La concaténation de chaînes de caractères" " se fait avec"
|
||||||
|
"des séries de chaînes " "séparées par des espaces";
|
||||||
print a;
|
print a;
|
||||||
|
|
||||||
a++;
|
a++;
|
||||||
@@ -113,7 +128,9 @@ BEGIN {
|
|||||||
assoc["foo"] = "bar";
|
assoc["foo"] = "bar";
|
||||||
assoc["bar"] = "baz";
|
assoc["bar"] = "baz";
|
||||||
|
|
||||||
# et les tableaux multi-dimentions, avec certaines limitations que l'on ne mentionnera pas ici
|
# et les tableaux multi-dimentions, avec certaines limitations que l'on ne
|
||||||
|
# mentionnera pas ici
|
||||||
|
|
||||||
multidim[0,0] = "foo";
|
multidim[0,0] = "foo";
|
||||||
multidim[0,1] = "bar";
|
multidim[0,1] = "bar";
|
||||||
multidim[1,0] = "baz";
|
multidim[1,0] = "baz";
|
||||||
@@ -132,10 +149,12 @@ BEGIN {
|
|||||||
print ARGV[argnum];
|
print ARGV[argnum];
|
||||||
|
|
||||||
# Vous pouvez supprimer des éléments d'un tableau
|
# Vous pouvez supprimer des éléments d'un tableau
|
||||||
# C'est utile pour empêcher AWK de supposer que certains arguments soient des fichiers à traiter.
|
# C'est utile pour empêcher AWK de supposer que certains arguments soient
|
||||||
|
# des fichiers à traiter.
|
||||||
|
|
||||||
delete ARGV[1];
|
delete ARGV[1];
|
||||||
|
|
||||||
# Le nombre d'arguments de la ligne de commande est dans une variable appellée ARGC
|
# Le nombre d'arguments de la ligne de commande est assigné à la variable ARGC
|
||||||
print ARGC;
|
print ARGC;
|
||||||
|
|
||||||
# AWK inclue trois catégories de fonction.
|
# AWK inclue trois catégories de fonction.
|
||||||
@@ -149,16 +168,17 @@ BEGIN {
|
|||||||
# Voici comment définir une fonction
|
# Voici comment définir une fonction
|
||||||
function arithmetic_functions(a, b, c, d) {
|
function arithmetic_functions(a, b, c, d) {
|
||||||
|
|
||||||
# La partie la plus ennuieuse de AWK est probablement l’absence de variables locales.
|
# La partie la plus ennuieuse de AWK est probablement l’absence de variables
|
||||||
# Tout est global. Pour les scripts courts, c'est très utile, mais pour les scripts plus longs,
|
# locales. Tout est global. Pour les scripts courts, c'est très utile, mais
|
||||||
# cela peut poser problème.
|
# pour les scripts plus longs, cela peut poser problème.
|
||||||
|
|
||||||
# Il y a cepandant une solution de contournement (enfin ... une bidouille).
|
# Il y a cepandant une solution de contournement (enfin ... une bidouille).
|
||||||
# Les arguments d'une fonction sont locaux à cette fonction.
|
# Les arguments d'une fonction sont locaux à cette fonction.
|
||||||
# Et AWK vous permet de définir plus d'arguments à la fonction que nécessaire.
|
# Et AWK vous permet de définir plus d'arguments à la fonction que nécessaire.
|
||||||
# Il suffit donc de mettre une variable locale dans la déclaration de fonction,
|
# Il suffit donc de mettre une variable locale dans la déclaration de fonction,
|
||||||
# comme ci-dessus. La convention veut que vous mettiez quelques espaces supplémentaires
|
# comme ci-dessus. La convention veut que vous mettiez quelques espaces
|
||||||
# pour faire la distinction entre les paramètres réels et les variables locales.
|
# supplémentaires pour faire la distinction entre les paramètres réels et
|
||||||
|
# les variables locales.
|
||||||
# Dans cet exemple, a, b et c sont des paramètres réels,
|
# Dans cet exemple, a, b et c sont des paramètres réels,
|
||||||
# alors que d est simplement une variable locale.
|
# alors que d est simplement une variable locale.
|
||||||
|
|
||||||
@@ -197,6 +217,7 @@ function string_functions( localvar, arr) {
|
|||||||
|
|
||||||
# Chercher et remplacer, la première occurence (sub) ou toutes les occurences (gsub)
|
# Chercher et remplacer, la première occurence (sub) ou toutes les occurences (gsub)
|
||||||
# Les deux renvoient le nombre de correspondances remplacées
|
# Les deux renvoient le nombre de correspondances remplacées
|
||||||
|
|
||||||
localvar = "fooooobar";
|
localvar = "fooooobar";
|
||||||
sub("fo+", "Meet me at the ", localvar); # localvar => "Meet me at the bar"
|
sub("fo+", "Meet me at the ", localvar); # localvar => "Meet me at the bar"
|
||||||
gsub("e", ".", localvar); # localvar => "m..t m. at th. bar"
|
gsub("e", ".", localvar); # localvar => "m..t m. at th. bar"
|
||||||
@@ -244,8 +265,8 @@ function io_functions( localvar) {
|
|||||||
# Lire quelque chose depuis l'entrée standard et la stocker dans une variable locale
|
# Lire quelque chose depuis l'entrée standard et la stocker dans une variable locale
|
||||||
getline localvar;
|
getline localvar;
|
||||||
|
|
||||||
# Lire quelque chose à partir d'un pipe (encore une fois, utilisez une chaine de caractère
|
# Lire quelque chose à partir d'un pipe (encore une fois, utilisez une
|
||||||
# que vous fermerez proprement)
|
# chaine de caractère que vous fermerez proprement)
|
||||||
"echo foobar" | getline localvar # localvar => "foobar"
|
"echo foobar" | getline localvar # localvar => "foobar"
|
||||||
close("echo foobar")
|
close("echo foobar")
|
||||||
|
|
||||||
@@ -256,18 +277,19 @@ function io_functions( localvar) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Comme dit au début, AWK consiste en une collection de règles et d'actions.
|
# Comme dit au début, AWK consiste en une collection de règles et d'actions.
|
||||||
# Vous connaissez déjà les règles BEGIN et END. Les autres règles ne sont utilisées que si vous traitez
|
# Vous connaissez déjà les règles BEGIN et END. Les autres règles ne sont
|
||||||
# des lignes à partir de fichiers ou l'entrée standard (stdin).
|
# utilisées que si vous traitez des lignes à partir de fichiers ou l'entrée
|
||||||
# Quand vous passez des arguments à AWK, ils sont considérés comme des noms de fichiers à traiter.
|
# standard (stdin).
|
||||||
# AWK les traitera tous dans l'ordre. Voyez les comme dans à une boucle implicite,
|
# Quand vous passez des arguments à AWK, ils sont considérés comme des noms de
|
||||||
# parcourant les lignes de ces fichiers.
|
# fichiers à traiter. AWK les traitera tous dans l'ordre. Voyez les comme dans à
|
||||||
# Ces règles et ces actions ressemblent à des instructions switch dans la boucle.
|
# une boucle implicite, parcourant les lignes de ces fichiers. Ces règles et ces
|
||||||
|
# actions ressemblent à des instructions switch dans la boucle.
|
||||||
|
|
||||||
/^fo+bar$/ {
|
/^fo+bar$/ {
|
||||||
|
|
||||||
# Cette action sera exécutée pour chaque ligne qui correspond à l'expression régulière,
|
# Cette action sera exécutée pour chaque ligne qui correspond à l'expression
|
||||||
# /^fo+bar$/, et sera ignorée pour toute ligne qui n'y correspond pas.
|
# régulière, /^fo+bar$/, et sera ignorée pour toute ligne qui n'y correspond
|
||||||
# Imprimons simplement la ligne:
|
# pas. Imprimons simplement la ligne:
|
||||||
|
|
||||||
print;
|
print;
|
||||||
|
|
||||||
@@ -275,14 +297,15 @@ function io_functions( localvar) {
|
|||||||
# $0 est le nom de la ligne en cours de traitement. Il est créé automatiquement.
|
# $0 est le nom de la ligne en cours de traitement. Il est créé automatiquement.
|
||||||
|
|
||||||
# Vous devinez probablement qu'il existe d'autres variables $.
|
# Vous devinez probablement qu'il existe d'autres variables $.
|
||||||
# Chaque ligne est divisée implicitement avant que chaque action soit exécutée, comme
|
# Chaque ligne est divisée implicitement avant que chaque action soit exécutée,
|
||||||
# le fait le shell. Et, comme le shell, chaque champ est accessible avec un signe dollar
|
# comme le fait le shell. Et, comme le shell, chaque champ est accessible
|
||||||
|
# avec un signe dollar
|
||||||
|
|
||||||
# Ceci affichera les deuxième et quatrième champs de la ligne.
|
# Ceci affichera les deuxième et quatrième champs de la ligne.
|
||||||
print $2, $4;
|
print $2, $4;
|
||||||
|
|
||||||
# AWK défini automatiquement beaucoup d'autres variables qui peuvent vous aider
|
# AWK défini automatiquement beaucoup d'autres variables qui peuvent vous
|
||||||
# à inspecter et traiter chaque ligne. La plus importante est NF
|
# aider à inspecter et traiter chaque ligne. La plus importante est NF
|
||||||
|
|
||||||
# Affiche le nombre de champs de la ligne
|
# Affiche le nombre de champs de la ligne
|
||||||
print NF;
|
print NF;
|
||||||
@@ -298,26 +321,30 @@ a > 0 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Les expressions régulières sont également des tests conditionels.
|
# Les expressions régulières sont également des tests conditionels.
|
||||||
#Si le test de l'expression régulières n'est pas vrais alors le bloc n'est pas executé
|
# Si le test de l'expression régulières n'est pas vrais alors le bloc
|
||||||
|
# n'est pas executé
|
||||||
|
|
||||||
$0 /^fobar/ {
|
$0 /^fobar/ {
|
||||||
print "la ligne commance par fobar"
|
print "la ligne commance par fobar"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Dans le cas où vous voulez tester votre chaine de caractères sur la ligne en cours de traitement
|
# Dans le cas où vous voulez tester votre chaine de caractères sur la ligne
|
||||||
# $0 est optionnelle.
|
# en cours de traitement $0 est optionnelle.
|
||||||
|
|
||||||
/^[a-zA-Z0-9]$/ {
|
/^[a-zA-Z0-9]$/ {
|
||||||
print "La ligne courante ne contient que des caractères alphanumériques.";
|
print "La ligne courante ne contient que des caractères alphanumériques.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# AWK peut parcourir un fichier texte ligne par ligne et exécuter des actions en fonction de règles établies
|
# AWK peut parcourir un fichier texte ligne par ligne et exécuter des actions en
|
||||||
# Cela est si courant sous UNIX qu'AWK est un langage de script.
|
# fonction de règles établies. Cela est si courant sous UNIX qu'AWK est un
|
||||||
|
# langage de script.
|
||||||
|
|
||||||
# Ce qui suit est un exemple rapide d'un petit script, pour lequel AWK est parfait.
|
# Ce qui suit est un exemple rapide d'un petit script, pour lequel AWK est
|
||||||
# Le script lit un nom à partir de l'entrée standard, puis affiche l'âge moyen de toutes les
|
# parfait. Le script lit un nom à partir de l'entrée standard, puis affiche
|
||||||
# personnes portant ce prénom.
|
# l'âge moyen de toutes les personnes portant ce prénom.
|
||||||
# Supposons que vous fournissiez comme argument le nom d'un fichier comportant ces données:
|
# Supposons que vous fournissiez comme argument le nom d'un fichier comportant
|
||||||
|
# ces données:
|
||||||
#
|
#
|
||||||
# Bob Jones 32
|
# Bob Jones 32
|
||||||
# Jane Doe 22
|
# Jane Doe 22
|
||||||
|
Reference in New Issue
Block a user