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/ |
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.