1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D....

15
1 GPA435 Systèmes GPA435 Systèmes d’exploitation et d’exploitation et programmation de programmation de système système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1) U n ive rs ité d u Q uébec É co le d e te c h n o lo g ie s u p érieu re D é partem e n t de génie de la p ro du ctio n a u to m a tisée

Transcript of 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D....

Page 1: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

1

GPA435 Systèmes GPA435 Systèmes d’exploitation et d’exploitation et programmation de programmation de systèmesystème

Copyright, 2000 © Tony Wong, Ph.D.

Chapitre 9Filtre programmable nawk(1)

Université du Québec

École de technologie supérieureDépartem ent de génie de la production autom atisée

Page 2: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

2

Filtres programmable Filtres programmable nawk(1)nawk(1)• Il s’agit d’un programme UNIX capable Il s’agit d’un programme UNIX capable

d’interpréter un programme utilisateur.d’interpréter un programme utilisateur.

• Le programme doit être écrit en utilisant les Le programme doit être écrit en utilisant les instructions légales et selon le format de instructions légales et selon le format de nawk(1)nawk(1)..

• Le concept de programmation est appelé Le concept de programmation est appelé « piloté par données » (« piloté par données » (data-drivendata-driven).).

• On peut utiliser le On peut utiliser le nawk(1)nawk(1) pour: pour:– Valider des concepts de programmationValider des concepts de programmation– Automatiser les tâches de gestionAutomatiser les tâches de gestion– Évaluer rapidement les algorithmesÉvaluer rapidement les algorithmes– etc.etc.

Système d’exploitation UNIX

Page 3: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

3

Invocation de Invocation de nawk(1)nawk(1)• Le synopsis de Le synopsis de nawk(1)nawk(1)::nawk [-F c] [-f prog | 'prog' ] [-v var=valeur…] [fich1 fich2 …]nawk [-F c] [-f prog | 'prog' ] [-v var=valeur…] [fich1 fich2 …]

Chaque ligne d’entrée est séparée en champs $0, $1, $2, $3, etc. Chaque ligne d’entrée est séparée en champs $0, $1, $2, $3, etc.

Ces champs Ces champs n’ont rien à voirn’ont rien à voir avec les $1, $2, ... de Bourne shell. avec les $1, $2, ... de Bourne shell.

On peut spécifier un programme nawk(1) dans un fichier par l ’option On peut spécifier un programme nawk(1) dans un fichier par l ’option -f ou l’écrire directement entre apostrophes.-f ou l’écrire directement entre apostrophes.

Système d’exploitation UNIX

Option et paramètre Signification

- Fc Caractère c est le séparateur de champ.

- f pr og pr og est le nom du fichier contenant le programme nawk.

' pr ogr amme' programme nawk donné directement entre apostrophes.

- v var =val eur … Initialisation des variables avant l’exécution du programme.

fi chi er 1 … Fichier contenant les données à traiter.

Page 4: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

4

Invocation de Invocation de nawk(1)nawk(1)• Les données à traiter sont contenues dans les Les données à traiter sont contenues dans les

fichiers fich1, fich2, .… ou acheminées via fichiers fich1, fich2, .… ou acheminées via l’entrée standard.l’entrée standard.

• Le programme Le programme nawk(1)nawk(1) proprement dit est proprement dit est une séquence de « patron - action ».une séquence de « patron - action ».

• On peut passer des paramètres à un On peut passer des paramètres à un programme programme nawk(1)nawk(1) par l’option -v. par l’option -v.– Cette option est utile lorsque Cette option est utile lorsque nawk(1)nawk(1) est utilisée est utilisée

à l’intérieur d’un fichier de commande (Bourne à l’intérieur d’un fichier de commande (Bourne shell par exemple).shell par exemple).

– Par exemple, on peut passer la valeur des Par exemple, on peut passer la valeur des variables d’un programme Bourne shell à des variables d’un programme Bourne shell à des variables d’un programme variables d’un programme nawk(1)nawk(1)..

Système d’exploitation UNIX

Page 5: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

5

Filtres programmable Filtres programmable nawk(1)nawk(1)• Son principe de fonctionnement: Son principe de fonctionnement:

Système d’exploitation UNIX

nawk(1)

patron actionpatron actionpatron actionpatron actionpatron action : : : :

D o n n ées (fi ch ierA SC I I o u l'en trée

stan d ard )

P ro gram m e co m p o séd 'un e séquen ce < < p atro n

- actio n > >

nawk(1) lit l'en tréeligne p ar ligne

nawk(1) co m p arech aque p atron d u

p ro gram m e av ec la lign elue

L 'actio n d e ch aquep atro n sélectio n n é estex écutée p ar nawk(1)

1 23

Page 6: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

6

Programmation Programmation nawk(1)nawk(1)

Système d’exploitation UNIX

Voici un premier exemple. Le Voici un premier exemple. Le programme programme nawk(1)nawk(1) est spécifié est spécifié directement entre apostrophes.directement entre apostrophes.

centi 27> nawk 'BEGIN { print "Premier programme nawk" } \{print $0} \END { print "Fin du programme nawk" }' passwd.datPremier programme nawksicm1502:hh60XAW5rRPd6:30573:112:Mathieu Sicotte:/export/home/exa/email/sicm1502:/bin/cshlaph2609:3l29au7qzUnDs:30387:112:Hugo Laporte:/export/home/exa/email/laph2609:/bin/cshjane1651:opFd1xua3cZI2:30861:112:Elsa Janaud:/export/home/exa/email/jane1651:/bin/csh: : :: : :robf0208:1CubPk1NPqDIQ:30545:112:Francois Robichaud:/export/home/exa/email/robf0208:/bin/cshrobcad49:*:11450:114:Compte Robcad,mai 95,Mario Tetreault:/usr/people/exa/robcad/robcad49:/bin/cshFin du premier programme nawk

Page 7: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

7

Programmation Programmation nawk(1)nawk(1)

Système d’exploitation UNIX

Nous pouvons également spécifier le programme Nous pouvons également spécifier le programme nawk(1)nawk(1) dans un dans un fichier.fichier.

L’option -f est obligatoire.L’option -f est obligatoire. Il est recommandé d’utiliser un fichier source surtout lorsqu’il Il est recommandé d’utiliser un fichier source surtout lorsqu’il

comporte beaucoup de lignes.comporte beaucoup de lignes.L’utilisation d’un fichier source facilite la compréhension surtout L’utilisation d’un fichier source facilite la compréhension surtout

pour les novices.pour les novices.

nawk –f mon_prog passwd. dat # Programme mon_pr ogBEGI N { pr i nt "Premi er programme nawk" } {pr i nt $0} # affi che l a l i gne l ue # ( i l n’ y a pas pat ron)END { pr i nt "Fi n du programme nawk" }

Page 8: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

8

Programmation Programmation nawk(1)nawk(1) Nous pouvons utiliser nawk(1) dans Nous pouvons utiliser nawk(1) dans

un fichier de commande.un fichier de commande.

Système d’exploitation UNIX

1 #! / bi n/ sh2 # nawkdemo : mont rer l ’ ut i l i sat i on de nawk dans un programme Bourne shel l3 #45 # Fonct i on Bour ne shel l pour affi cher l e cont enu6 # d’ un fi chi er passé en paramèt re7 Affi che ( ) {89 nawk '10 BEGI N { pr i nt "Premi er programme nawk" }11 {pr i nt $0}12 END { pr i nt "Fi n programme nawk" }13 ' $11415 }1617 # programme pr i nci pal18 i f [ $# - ne 1 ]19 t hen20 echo "Donner l e nom de fi chi er du fi chi er à t r ai t er "21 el se22 Affi che "$1"23 fi

Page 9: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

9

Structure d’un programme Structure d’un programme (1)(1) La structure d ’un programme nawk(1) est La structure d ’un programme nawk(1) est

une séquence de « patron - action »:une séquence de « patron - action »:

Le programme est toujours entouré de ' ' Le programme est toujours entouré de ' ' s’il est spécifié dans la ligne de commande.s’il est spécifié dans la ligne de commande.

Il doit exister au moins un caractère blanc Il doit exister au moins un caractère blanc (Espace ou Tab) entre le patron et son (Espace ou Tab) entre le patron et son action.action.

Les patrons sont évalués dans l’ordre Les patrons sont évalués dans l’ordre spécifié.spécifié.

Système d’exploitation UNIX

nawk 'patron {action}patron {action}patron {action} : : : :'

1

Page 10: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

10

Structure d’un programme Structure d’un programme (2)(2)Les déclarations « patron - action » peuvent ne pas Les déclarations « patron - action » peuvent ne pas

contenir de patron OU d’action.contenir de patron OU d’action.Une déclaration sans patron Une déclaration sans patron l’action correspondante est l’action correspondante est

toujours exécutée peu importe la ligne d’entrée.toujours exécutée peu importe la ligne d’entrée.Une déclaration sans action Une déclaration sans action la ligne d’entrée est la ligne d’entrée est

affichée à la sortie standard (équivalent à print $0) si elle affichée à la sortie standard (équivalent à print $0) si elle satisfait le critère spécifié par le patron.satisfait le critère spécifié par le patron.

On peut considérer un patron comme un filtre d’où On peut considérer un patron comme un filtre d’où l’appellation « filtre programmable »l’appellation « filtre programmable »

Système d’exploitation UNIX

Page 11: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

11

Structure d’un Structure d’un programme (3)programme (3) Un exemple illustratif:Un exemple illustratif:

Système d’exploitation UNIX

: : :pat r on {act i on} {act i on} # pas de pat r on donc act i on est t ouj our s encl enchée pour l es # l i gnes d’ ent rée l ues

pat ron # pas d’ act i on donc l es l i gnes cor respondant au pat ron seront # affi chées: : :

Une déclaration sans patron (sans filtre) Une déclaration sans patron (sans filtre)

Une déclaration sans action Une déclaration sans action (activation de l’action par défaut qui (activation de l’action par défaut qui est le print $0) est le print $0)

Page 12: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

12

Structure d’un programme Structure d’un programme (4)(4)

Système d’exploitation UNIX

La première accolade est toujours La première accolade est toujours placée sur la même ligne que le patron.placée sur la même ligne que le patron.

On peut utiliser le point-virgule (;) pour On peut utiliser le point-virgule (;) pour séparer les instructions d’une même séparer les instructions d’une même ligne.ligne.

: : :pat r on {i nst r 1; i nst r2; i nst r 3} # i nst r uct i ons sépar ées par des ;pat r on { # premi èr e accol ade doi t si t uée sur l a même l i gne que l e pat r on i nst r1 i nst r2 # i nst r uct i ons peuvent s’ ét endr e sur pl us d’ une l i gne i nst r3}: : :

Ces deux styles d’écriture sont Ces deux styles d’écriture sont équivalents.équivalents.

Page 13: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

13

Activités de traitement (1)Activités de traitement (1)

Système d’exploitation UNIX

lire un e lign ede l'en trée

F in desdo n n ées ?

D éb u t

n o n

A

F in

D o n n ées p euv en t p ro v en ir d 'unfi ch ier o u p ar l'en trée stan dard .

o ui

E x écuter l'actio n sp écifi éep ar le p atro n BEGIN

E x écuter l'actio n sp écifi éep ar le p atro n END

B

Voici les activités réalisées Voici les activités réalisées par par nawk(1)nawk(1) lors de lors de l’exécution d’un l’exécution d’un programme utilisateur.programme utilisateur.

On remarque qu’il y a un On remarque qu’il y a un ensemble d’opérations ensemble d’opérations effectuées par effectuées par nawk(1)nawk(1) qui qui facilitent grandement la facilitent grandement la programmation.programmation.

Page 14: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

14

Système d’exploitation UNIXA

I l y aco rresp o n d an ce ?

Sép are la lign e lue ench am p s $1 à $NF

À p artir de lap rem ière déclaratio n

du p ro gram m eutilisateur

Jusqu'à la dern ièredéclaratio n du

p ro gram m e utilisateur

C o m p are la lign e et lep atro n de ladéclaratio n

E x écuter l'actio nsp écifi ée

B

$0 rep résen te la lign e lue. L esép arateur de ch am p est sp écifi édan s la v ariab le FS.

L a co m p araiso n s'eff ectue selo nl'o rdre des déclaratio n s dup ro gram m e utilisateur. T o us lesp atro n s du p ro gram m e so n tv érif és.

Pour chaque ligne Pour chaque ligne d’entrée (d’un fichier d’entrée (d’un fichier ou de l’entrée ou de l’entrée standard), standard), nawk(1)nawk(1) effectue l ’appariement effectue l ’appariement entre les champs de la entre les champs de la ligne et chacun des ligne et chacun des patrons du programme.patrons du programme.

Donc, ce n’est pas un Donc, ce n’est pas un simple case - esac !!simple case - esac !!

Page 15: 1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Filtre programmable nawk(1)

15

Chapitre 9Chapitre 9

Système d’exploitation UNIX

Fin de la première partie.Fin de la première partie. Consulter la référence:Consulter la référence:Aho, A. V. et al., The AWK Programming Language, Aho, A. V. et al., The AWK Programming Language,

Reading, Mass: Addison-Wesley, 1988Reading, Mass: Addison-Wesley, 1988