système d’exploitation partie ii le shell - awk · 2014-02-26 · système d’exploitation...
Post on 04-Aug-2020
5 Views
Preview:
TRANSCRIPT
Système d’exploitation
Laurent Amanton
Université du HavreUFR des Sciences et Techniques
bureau B 110email : laurent.amanton@univ-lehavre.fr
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Partie II
Le shell - AWK
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Sommaire du chapitre
1 Programmation en shell (bash)
2 AWK
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
À quoi ça sert ? 4
1er processus d’une sessionConteneur d’une sessionuser: password: uid: gid: comment: home: shell
interpréteur de commandeslecture et exécution de commandesredirection des entrées sortiesexpansion des noms de fichiersinterface utilisateur (historique, complétion, alias, gestion dejobs...)
langage de programmationprogrammation interactive ou par fichiers de commandesinstructions conditionnelles et itératives, fonctionsgestion de variablessubstitution de paramètres
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Différents Shells 5
sh ("Bourne shell", Steve Bourne)shell disponible sur tous les Unix.
csh ("C-shell", Bill Joy)shell BSD disponible sur tous les Unix.
ksh ("Korn shell")shell normalisé (POSIX et ISO (HP, Solaris))
zsh ("Zero shell")shell du domaine public
tcsh ("Toronto C-shell")
bash ("Bourne again shell" de Brian Fox et Chet Ramey)installé sur toutes les machines unix et linux
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
un mini OS ... 6
Ouverture des fichiers standardsentrée standard (stdin, fd=0)sortie standard (stdout, fd=1)sortie erreur standard (stderr, fd=2)
Le shell lit sur son entrée standardlecture de la commande jusqu’à la fin de ligne (interprétation desmétacaractères et opérateurs)lecture des lignes de commandes jusqu’à la fin de fichier
Lancement d’une commanderecherche du nom de la commande à l’aide du pathen premier plan : fork() exec(commande) wait() prompten arrière plan : fork() exec(commande) prompt
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Caractères de contrôle (clavier) 7
∧C interruption d’un processus attaché au terminal∧Z suspension d’un processus en premier plan∧\ arrêt d’un processus avec vidage mémoire (core)∧U effacement de la ligne complète∧D fin de fichier (si le shell lit, fin du shell)∧S suspension de l’affichage écran (Xoff)∧Q reprise de l’affichage écran (Xon)
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Enchaînement de commandes 8
Commande simple : com [arg]
Commande simple en arrière plan : com [arg] &
Pipeline (tube de communication) : com1 [arg] | com2 [arg]
Séquence de commandes : com1 [arg] ; com2 [arg]
Exécution dans un sous-shell :sh com [arg](com [arg]) ou (com [arg])&
Regroupement de commandes :(com1 [arg] ; com2 [arg])(com1 [arg] ; com2 [arg]) &
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Redirections 9
redirection de l’entrée standard< fichier ou périphérique
<< balise texte jusqu’à la balise (here doc)
redirection de la sortie standard> fichier ou périphérique
1 > fichier ou périphérique
>> ajout (en fin de fichier)
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Redirections 10
redirection de la sortie erreur
> & fichier ou périphérique
& > fichier ou périphérique
2 > fichier ou périphérique
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Exemples de redirections 11
1 cat f1 > f22 cat f1 � f23 cat > f4 ls > f5 cat < f6 cat < f1 > f27 cat > f2 < f18 cat < f1 � f29 commande 1 >/dev/null 2 > &1/dev/null10 rm *.bak > & f
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Caractères d’expansion (des noms de fichiers) 12
[xyz] coïncidence avec x , y ou z∗ remplace n’importe quoi (y compris rien)? remplace un et un seul caractère
[x− z] coïncidence dans l’intervalle [x,y]{x ,yyy} remplace successivement les chaînes x et yyy
∼ remplace par HOME
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Caractères d’expansion (des noms de fichiers) 13
Exemples1 ls ∗a.∗
2 ls [A-Z]∗ .[mp3-6]
3 ls ∗.{ps,pdf}
4 cd ∼
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Variables d’environnement (env) 14
PATH suite de chemins
MAIL chemin d’accès à la boite mail
ENV fichier de toutes les variables d’environnement
TERM nom du type de terminal
LOGNAME nom de login
USER nom de l’utilisateur actuel
...
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Variables de substitution 15
$0 nom du script (pathname)$1, ..., $9 arguments
$] nombre d’arguments$* liste de tous les arguments
$@ liste de tous les arguments$? code de retour de la dernière commande$$ numéro de processus de ce shell$! numéro du dernier processus en arrière plan
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Variables utilisateur 16
Déclarationvariable=valeur
Utilisation
$variable ou ${variable}
Exportation
export variable=valeur (bash)
exemple
toto=’bla bla bla’
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Condition 17
condition simple
if commande ; thenliste de commandes
fi
condition et alternativeif commande ; then
liste de commandeselse
liste de commandesfi
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Condition 18
conditions multiples
if commande ; thenliste de commandes
elif commande ; thenliste de commandes
elseliste de commandes
fi
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Conditions multiples par aiguillage 19
Aiguillage
case $variable inmotif 1) liste de commandes ;;motif 2) liste de commandes ;;*) liste de commandes ;;
esac
exemple
case $] in1) a=$1;;2) a=$1; b=$2 ;;0) echo "usage: $0 a [ b ]" ; exit 1;;
esac
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Boucles 20
for
for variable [ in liste ]do
liste de commandesdonewhilewhile commandedo
liste de commandesdoneuntiluntil commandedo
liste de commandesdone
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Boucles 21
exemple
for f in *.bak ; dorm $f
done
verif="n"while [ "$verif" != o ]do
echo "Entrer une valeur : "read valeurecho "vous avez entré $valeur. Correct ? (o/n)"read verif
done
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Rupture de boucles 22
Sortie de boucle
break [n]n est le niveau de boucle depuis la boucle la plus externe
Reprise de boucle
continue [n]
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
expansion de paramètres 23
${var:-val} si var définie ou non nulle alors var sinon val${var:?mess} si var définie ou non nulle alors var sinon affiche mess
${var:+val} si var définie ou non nulle alors val sinon rien${]var} longueur en octet de la chaîne var
${var:début:long} sous-chaîne${var%str} supprime en fin de var la plus petite chaîne des 2
renommage
for f in *.mp3 ; dofiche=${f%.mp3} ; mv $f $fiche.ogg
done
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Expansion de commandes 24
expansion
variable=‘commande ‘
variable=$(commande)
exemples
date=‘date +%d/%m/%y‘
dir=‘dirname $fichier ‘
nomfichier=$(basename $fichier )
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Quotes 25
quotes simples ’ pas d’évaluation des méta-caractères
quotes doubles “ expansion pour $ ‘ et \
exemple
echo "usage: ‘basename $0‘ ’$HOME’"
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Interruptions 26
mise en place d’un déroutement
trap ’liste de commandes’ liste de signauxexemple : trap ’rm /tmp/* ; exit 0’ 2 3
désactivation des signaux
trap ” liste de signauxexemple : trap ” 1 2 18
Repositionnement par défaut des signaux
trap liste de signauxexemple : trap 1 2 3
Liste des signaux déroutés
trap
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Test 27
test sur les fichierstest -option fichier
f fichier ?
-d répertoire ?
-s fichier de taille non nulle ?
-r en lecture ?
-w en écriture ?
-x exécutable ?
-e existe ?
...
exemple
if [ ! -d repertoire ]; then mkdir repertoire ; fi
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Test 28
tests algébriques
test nombre1 -option nombre2
-eq equal ?
-ne non equal ?
-gt greater than ?
-lt less than ?
-ge greater or equal ?
-le less or equal ?
exemple
if [ $a -eq 2 ]; then a=0 ; fi
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Test 29
comparaisons alphanumériques
test chaîne1 option chaîne2
= égal ?
!= différent ?
> supérieur strict ?
< inférieur strict ?
>= supérieur ou égal ?
<= inférieur ou égal ?
exemple
if [ $chaine = “toto” ]; then ... ; fi
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Test 30
comparaisons booléennes
test -z chaîne chaîne de longueur zéro ?
test -n chaîne chaîne de longueur non nulle ?
divers! not
-a et logique (and)
-o ou logique (or)
-nt fichier plus récent qu’un autre
-ot fichier plus ancien qu’un autre
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Arithmétique 31
Évaluation d’expressions
expr valeur1 opérateur valeur2
opérateurs + − ∗ / %
pas très performant
exemple
compteur=‘expr $compteur + 1‘
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Arithmétique 32
Évaluation d’expressions
$[ valeur1 opérateur valeur2 ]
opérateurs + − ∗ / %
très performant mais dépendant du shell(inexistant dans sh)
exemple
compteur= $[ $compteur + 1 ]
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Fonctions internes 33
alias [nom[=commande] ...] définition d’une commandeunalias [nom ...] suppression d’un alias
bg [jobnum] backgroundfg [jobnum] foreground
echo [-ne] [arg ...] affichageeval [arg ...] évaluation d’une expression
exec [ [-] commande[arg ...] ] exécution d’une commandeexit [n] sortie du script
kill [-signal] [pid|jobnum] envoi de signauxread [variable ...] lecture au clavier
return [n] retour d’une fonction
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Fonctions internes 34
set [-option] [arg ...] positionne des variablesunset [variable ...] supprime une variable
shift [n] décalage des paramètres $itest expression condition
times données temporellestrap [arg] [signaux] déroutements
ulimit [-option [limite] ] limitation des ressourcesumask [mode] masque utilisateur (chmod)
wait [pid|jobnum] synchronisation
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Fonctions utilisateur 35
Deux déclarations possibles
function nom_fonction { . . . }
nom_fonction () { . . . }
exemple
main(){
if [ $] = 0 ]; thenecho “1 paramètre !”exit 1
fi}
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Fonctions utilisateur 36
Les fonctions doivent être définies avant leur appel
Aucun argument lors de la déclaration d’une fonction
Appel d’une fonction : nom_fonction arg1 arg2 ...
Récupération des arguments : $1 $2 ...
exemple
usage(){
echo "usage: $1 $2"}
usage ‘basename $0‘ “nom_de_fichier”
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Script shell 37
Définitionensemble de commandes shell directement interprétables...
?
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
Script shell 38
Écriture d’un script
]!/bin/bash] localisation de l’interpréteur
Déclaration des variablesDéclaration des fonctions
appel de la fonction principale
Licence 3 Informatique Système d’exploitation
exemple
]/bin/bash
usage(){
echo "usage: $1 $2"}
function main{
if [ $] = 0 ]; thenusage ‘basename $0‘ “nom_de_fichier”exit 1
fi}
main $*
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sommaire
1 Programmation en shell (bash)
2 AWKIntroductionStructure généraleLes actions
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
AWK ? 41
Acronyme
A ho Alfred V.W einberger Peter JK ernighan Brian W.
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Historique 42
1977 naissance de AWK : Laboratoires AT&T Bell1985 nouvelle version du langage plus puissant
fonctions,flux d’entrées,expressions rationnelles compilées...
1986 apparition de la version GNU (GAWK) écrite par d’autresdéveloppeurs
comptatibilité AWK - GAWK
performances accruespropriétés supplémentaires...
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Pour faire quoi ? 43
Manipulation de données textuelles
Validation et test sur des données
Conversion de documents
Extraction d’informations depuis un fichier texte
Traitement de données textuelles
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Exemple 44
fichier exemple.txt
helene 56 edu ln@sun.comjean 32 ri jean@wanadoo.frjulie 22 adm julie@free.frmichel 24 inf michel@yahoo.frrichard 25 inf riri@tele2.fr
awk ’{ print $1 }’ exemple.txt
helenejeanjuliemichelrichard
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Exemple 45
fichier exemple.txt
helene 56 edu ln@sun.comjean 32 ri jean@wanadoo.frjulie 22 adm julie@free.frmichel 24 inf michel@yahoo.frrichard 25 inf riri@tele2.fr
awk ’NR > 1 { print $1 }’ exemple.txt
jeanjuliemichelrichard
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Exemple 46
fichier exemple.txt
helene 56 edu ln@sun.comjean 32 ri jean@wanadoo.frjulie 22 adm julie@free.frmichel 24 inf michel@yahoo.frrichard 25 inf riri@tele2.fr
awk ’BEGIN { printf ("Nom Numéro\n———- ——\n") }NR >= 1 { if ($2 > 24) { printf ("%-10s %6d\n", $1, $2) } }’ exemple.txt
Nom Numéro———- ——helene 56jean 32richard 25
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
3 façons principales d’utiliser AWK 47
1 En ligne de commande via le shellprogramme AWK en ligneprogramme AWK dans un fichier
2 À l’intérieur d’un script shell3 En script AWK exécutable
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
En ligne de commande 48
programme en ligne
awk ’NR > 1 { print $1 }’ exemple.txt
programme dans un fichier
awk -f prog.awk exemple.txt
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
À l’intérieur d’un script shell 49
]! \bin\sh
rep=‘pwd‘...
awk ’ print $3 ’ toto.txt
...
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Script AWK 50
]! \usr\bin\awk -f
{for (i=NF; i>0; i−−) {printf "%s%s", $i, OFS}print ""
}
...
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sommaire
1 Programmation en shell (bash)
2 AWKIntroductionStructure généraleLes actions
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Un véritable langage de programmation 52
Langage interprété très proche du C
Variables réservées de positionnement
Variables utilisateur non typées
Fonctions prédéfinies (math, chaînes, ...)
Conditions, boucles, définition de fonctions
Utilisation des expressions rationnelles
Tableaux à indexation complexe
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Structuration en 3 blocs facultatifs 53
BEGIN {Pré-traitement (initialisation des variables réservées,globales etc.)}
{block de traitement récursif (lecture des enregistrements)}
END {Post-traitement (résultats des calculs, rapports, format de sortie}
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Structuration en 3 blocs facultatifs 54
BEGIN { . . . }
{ traitement . . . }
END { . . . }
END { . . . }
{ traitement . . . }
BEGIN { . . . }
END { . . . }
{ traitement . . . }
END { . . . }
BEGIN { . . . }
{ traitement . . . }
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Bloc de traitement 55
BEGIN { . . . }
{ traitement 1 . . . }
{ traitement 2 . . . }
{ traitement 3 . . . }
END { . . . }
⇐⇒
BEGIN { . . . }
{traitement 2 . . .traitement 1 . . .traitement 3 . . .}
END { . . . }
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sélection – Action 56
Ligne 1
Ligne 2
Ligne k
Ligne m
...
...
...
...
...
Selection 1 {Action 1}
Selection i {Action i}
...
...
...
Selection n {Action n}
END {Action de terminaison}
BEGIN {Action debut}Fichier
Pour chaque ligne du fichier, toutes les sélections sont scrutées...
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sélection – Action 57
Ligne 1
Ligne 2
Ligne k
Ligne m
...
...
...
...
...
Selection 1 {Action 1}
...
...
...
Selection n {Action n}
END {Action de terminaison}
BEGIN {Action debut}Fichier
{Action i}
S’il n’y a pas de sélection, l’action est exécutée pour chaque ligne.
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Syntaxe d’une sélection 58
Il existe deux façons de sélectionner des lignes d’un fichier :
relations de comparaison
expressions rationnelles (ou régulières en anglais)
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sélection par relations 59
Opérateurs de comparaison
<, >, <=, >=, ==, ! =
Exemples
NF == 2 vrai si 2 champs sur la ligne courante
NR ! = 1 vrai sauf pour la ligne 1
$1== ”toto” vrai si le 1er champ est "toto"
($2+$5)×2 <= $7 expression arithmétique
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Combinaisons de sélections 60
opérateurs logiques
&&, ||, !, ( )
intervalles,
/debut/ , /fin/ : sélectionne toutes les lignes entre la première quicontient "début" et la première qui contient "fin".
NR==4 , NR==8 : sélectionne les lignes de 4 à 8.
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sélection par expressions rationnelles 61
DéfinitionLes expressions rationnelles sont une famille de notations compactespermettant de décrire certains ensembles de chaînes de caractères.
Par exemple, Vim, Emacs, sed et awk les utilisent pour parcourir defaçon automatique des textes à la recherche de morceaux de texteparticuliers.
?
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sélection par expressions rationnelles 62
Caractères réservés :
caractère signification. un caractère quelconque[ début de définition d’un ensemble[∧ début de définition du complément d’un ensemble] fin de définition d’un ensemble ou de son complément− marque d’intervalle dans un ensemble∧ placé en début d’expression, signifie début de ligne$ placé en fin d’expression, signifie fin de ligne\( début de définition d’une sous-expression\) fin de définition d’une sous-expression
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sélection par expressions rationnelles 63
Exemples :
/[a5x]/ a, 5 ou x
/[a− z]/ une minuscule
/[02−69]/ 0, 2, 3, 4, 5, 6 ou 9
/[a− c4−6]/ a, b, c, 4, 5, ou 6
/[0−2−]/ 0, 1, 2, −/[∧a− zA−Z ]/ aucune lettre
/[012∧]/ 0, 1, 2 ou ∧
/[012a− z]$/ ligne finissant par 0, 1, 2 ou une minuscule
/∧toto/ ligne commençant par "toto"
/∧$/ ligne vide
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Combinaisons d’expressions rationnelles 64
Caractères réservés :
caractère signification* 0 ou plusieurs fois ce qui précède+ 1 ou plusieurs fois ce qui précède? 0 ou 1 fois ce qui précède| disjonction d’expressions rationnelles( ) parenthésage classique
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Combinaisons d’expressions rationnelles 65
Exemples :
/[a− z]∗/ 0 ou plusieurs minuscules
/00∗/ au moins un zéro (/0+/)
/.∗/ n’importe quoi (même vide)
/∧[a− z][a− z]∗$/ ligne ne contenant que desminuscules
/(Paul | Pierre) (Durand | Dupont) Paul ou Pierre suivi de Durand ouDupont
/[+−]?[0−9]+/ nombre entier signé
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Sommaire
1 Programmation en shell (bash)
2 AWKIntroductionStructure généraleLes actions
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Variables prédéfinies 67
variable significationARGC nb arguments de la ligne de commandeARGV tableau des ces argumentsFILENAME nom du fichier en entréeNF nb de champs de la ligne couranteNR nb de lignes déjà luesFNR nb de lignes du fichier courantFS séparateur de champsRS séparateur d’enregistrements en entrée (’\n’)OFS séparateur de champs en sortieORS séparateur d’enregistrements en sortieOFMT format de sortie pour les nombres (%.6g)ENVIRON tableau des variables d’environnement du shell
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Opérateurs 68
opération opérateursaffectation = + = ∗= / = % = ∧ =condition cond ? a : bconjonction &&disjonction ||comparaison == <= >= < > ! =arithmétique + − ∗ / % ++ −− ∧ |(négation)
accès aux champs $matching ∼ !∼∈ tableau inconcaténation "hello" "world"
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Boucles 69
Il existe 4 structures itératives :
while
do . . . while
for
for (parcours d’un tableau)
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Boucle while 70
while (<condition>)[{]
instruction(s)[}]
while(a<10) a++
while (a<10){ a++ }
! Les accolades de blocs sont facultatives seulementsi l’instruction s’étend sur une seule ligne.
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Boucle do while 71
do[{]
instruction(s)[}]
while (<condition>)
do {AfficheTableau ()}
while ( c=Getc()!= "quit")
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Boucle for 72
for (nombre=valeur_départ ; condition_maintien ; instruction_fin_boucle)[{]instruction(s)[}]
for (i=1 ; i<=5 ; i++){print i}
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Boucle for pour les tableaux 73
for (variable in Tableau)[{]instruction(s)[}]
for (index in T){print index ] affiche les indices du tableau}
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
La condition 74
if (<condition>)[{]instruction[}]
[else
[{]instruction[}]]
if (bidule ∼ "machin") machin="bidule"else if (truc ∼ "bidule") bidule=machin
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Divers 75
Commentaires
] blablablainstruction ] blablabla
Séparateur d’instructions
instruction_1 ; instruction_2instruction_3instruction_4
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Fonctions mathématiques 76
fonction significationcos(x) cosinussin(x) sinusatan2(y,x) arc-tangente y/x, intervalle [−π,π]sqrt(x)
√x
log(x) log népérienexp(x) exponentielleint(x) partie entièrerand( ) nombre aléatoire [0,1[srand(x) sel (par défaut : l’heure système)
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Les tableaux : associatifs 77
déclaration implicite, dimensionnement automatique
tableaux associatifs : (indice, valeur). L’indice peut être unechaîne de caractères ou un nombre entier ou décimal.exemples : Tab[2], Tab["toto"], Tab[3.14159], . . .
if (a in Tab) . . . ⇐⇒ if (Tab[a] ! = ””) . . .
affectation : Tableau[indice] =valeur
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Les tableaux 78
delete
delete Tab[indice] : supprime une paire (indice, valeur).
delete Tab : supprime tout mais non posix.
for (i in Tab) delete Tab[i] : supprime tout
!Les indices et les valeurs sont transformésen chaînes de caractères...Tab[05] < Tab[5]
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Les fonctions utilisateur 79
Comment définir une fonction ...
function nom_fonction ( [arg1, arg2, . . . ] ) {instructions. . .
return [expression]}
exemple
function AfficheReel (nombre ) {printf("%10.3f\n", nombre)
}
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Les fonctions internes 80
Affichage non formaté
print [ expression1, expression2, ... ]
Les éléments sont séparés par OFS, passage à la ligne ensuite.
exemple
print NR ":" $1, $2
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Les fonctions internes 81
Affichage formaté
printf (format, [ expression1, expression2, ... ] )
Le format est celui du langage C..
exemple
printf ("%s : %3.2f \n", var1, var2)
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Les fonctions internes 82
fonction significationsprintf (format, exp1, ...) la sortie est dirigée vers une chaînelength[(chaîne)] longueur d’une chaîne de carac-
tères, ou longueur de la ligne ($0)si aucun argument.
index(chaîne, sous-chaîne) position de la sous-chaîne ou 0sub(ER, nouveau, [ cible]) remplace la première plus longue
sous chaîne correspondant à ER(expression rationnelle) dans ciblepar nouveau
substr(chaîne, début[, long]) renvoie la sous-chaîne de chaînede longueur long qui commence àla position début.
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Les fonctions internes 83
fonction significationtolower(chaîne) conversion en minusculestoupper(chaîne) conversion en majusculessplit(chaîne,Tab[, sep]) décompose une chaîne en un tableau
selon le séparateur donné.match(chaîne, ER) renvoie la position de la plus longue chaîne
correspondant à l’expression rationnelledans chaîne.Positionnement de deux variables :RSTART : position début (ou 0)RLENGTH : longueur trouvée (ou -1).
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Exemple 1 84
Comment afficher les deux premières colonnes des deux premièreslignes des fichiers .html du répertoire courant ?
comme cela !
awk ’ FNR== 1 || FNR== 2 { print $1 $2 } ’ *.html
Licence 3 Informatique Système d’exploitation
Programmation en shell (bash)AWK
IntroductionStructure généraleLes actions
Exemple 2 85
Comment afficher la somme des nombres de la troisième colonne d’unfichier donné ?
comme cela !awk ’BEGIN {somme=0}{ somme + = $3 }END { print somme } ’ toto.txt
Licence 3 Informatique Système d’exploitation
top related