Inf1105

9/20/2005

Demo2 (partie 2)

-----------------------------------------------
------------ CINQUIEME PARTIE -----------------
-----------------------------------------------

Dans cette partie, pour exécuter les exemples de commandes, il vous faut copier le fichier /etc/passwd dans le répertoire courant.


SED et AWK
----------

sed : un EDITEUR de fichier texte NON-interactif.

awk : un LANGAGE pour le traitement de "motifs" (pattern).


SED
---

sed reçoit ses entrées d'un fichier ou du clavier (stdin) et affiche ses résultats à l'écran (stdout). sed, tout comme grep, traite les données en entrées une ligne à la fois. Par contre, contrairement à grep, sed permet de modifier le contenu recu en entree.

Voici les commandes de sed que nous verront :
s = substitute (remplacer)
d = delete (supprimer)
p = print (afficher)

Le format général de la commande sed est :

sed -e 'command1' [-e 'command2'] [...] fichier


Substitution :
--------------

Commande : 's/motif_a_remplacer/nouveau_motif/g'

(Le 'g' à la fin est optionnel. S'il est présent, toutes les occurences du motif_a_remplacer seront modifiées et non seulement la première occurence de chaque ligne)

Exemple : remplace la premiere occurence de "comptoir" de chaque ligne par "allo" :
% sed s/comptoir/allo/ passwd

remplace toutes les occurences de "comptoir" par "allo" :
% sed s/comptoir/allo/g passwd

substitution multiples, "comptoir" devient "allo" et "Usager" devient "user", partout dans le texte :
% sed -e s/comptoir/allo/g -e s/Usager/user/g passwd


Suppression :
-------------

Commande : '#ligne_debut[, #ligne_fin]d'

(c'est le 'd' à la fin qui indique qu'il faut supprimer les lignes spécifiées)

Exemple :

supprimer la premiere ligne :
% sed 1d passwd

supprimer les dix première lignes :
% sed 1,10d passwd

supprimer toutes les lignes :
% sed -n '' passwd


Afficher :
----------

Commande : '/motif/p' ou '#ligne_debut[, #ligne_fin]p'
(c'est le 'p' à la fin qui indique qu'il faut afficher les lignes spécifiées)

Exemple :

afficher la ligne qui contient "comptoir" :
% sed -n '/comptoir/p' passwd

afficher les dix premières lignes :
% sed -n '1,10p' passwd


AWK
---

awk est un langage de programmation très complet. Sa syntaxe est fortement inspirée du langage C. awk permet de manipuler les champs.

Le format général de la commande awk est :

awk [-F"séparateur_de_champs"] '{commande}' fichier



Exemples d'utilisation :
------------------------

affichage de champs particuliers :
% awk '{ print $0 }' passwd
% awk '{ print $1 }' passwd
% awk '{ print $2 }' passwd
% awk '{ print $1 $2} passwd
% awk -F":" '{ print $1 $3 }' passwd

affichage de texte statique :
% awk '{ print "" }' passwd
% awk '{ print "allo" }' passwd

affichage combiné de texte tiré du fichier et de texte statique :
% awk -F":" '{ print $1 " " $3 }' passwd
% awk -F":" '{print "login id is : ", $1}' passwd