next up previous contents index
suivant: Remarque sur l'utilisation de monter: Exemples avancés précédent: Exemple 4   Table des matières   Index


Exemple 5

Le but de cet exemple est de copier de tous les utilisateurs précédent l'entrée du compte « uucp » dans « /etc/passwd » et déplacer de les à la fin, compte « uucp » compris. Le résultat sera affiché sur la sortie standard.

Pour cela on fait appel à un fichier de commandes « sed » que l'on nommera « script.sed ». L'appel se fera de la façon suivante :

sed -f script.sed /etc/passwd

Détaillons les opérations à effectuer :

Pour cela, nous allons utiliser les commandes liées à la gestion de l'espace mémoire et l'espace de travail de « sed ». Comme il l'a été décrit à la section [*], « sed » dispose d'un espace mémoire permettant de stocker temporairement, un certain nombre d'informations.

La première étape consiste donc à partir du début du fichier (donc de la première ligne) et parcourir jusqu'à la première ligne commençant par « uucp ». Sachant que les nom d'utilisateurs sont uniques, le fichier ne contiendra qu'une et une seule ligne commençant par « uucp ». Les adresses de début et de fin sont donc :

 Description   Expression  
 Première ligne   1  
 Première ligne commençant par « uucp »   /^uucp/  
La commande « sed » appropriée pour stocker l'ensemble de ces lignes dans un espace mémoire est « H » (cf. section [*]). La requête associée est donc :
1,/^uucp/H

À ce stade de l'exécution, l'enregistrement courrant arrivant sur l'entrée de « sed » est la ligne du fichier « /etc/passwd » définissant le compte utilisateur suivant celui de « uucp ». Aucune action n'est spécifiée. Les lignes sont donc réécritures sans aucune opération sur la sortie standard.

Lorsque la fin de fichier est rencontrée, « sed » doit afficher ce qu'il a précédemment mémoriser dans son espace mémoire. Par conséquent, l'adresse valide pour exécuter la requête est celle correspondant à la fin de fichier : « $ ». Ici les adresses de début et de fin sont identiques : elles doivent correspondre toutes les deux à la fin de fichier. La commande « sed » appropriée pour afficher sur la sortie standard l'ensemble de ces lignes précédemment stockées dans un espace mémoire est « G » (cf. section [*]). La requête associée est donc :

$G

En conclusion, le contenu du fichier « script.sed » est :

1,/^uucp/H
$G

Remarque 14..2 :


L'espace mémoire utilisé est, bien sûr, propre à « sed ». Les opérations « g » et « h » sont similaires mais avec un espace vide au départ.


next up previous contents index
suivant: Remarque sur l'utilisation de monter: Exemples avancés précédent: Exemple 4   Table des matières   Index
baudry@esme.fr