 
 
 
 
 
 
 
 
 
 
Le but de cet exemple est de récupérer le champ « login » et « UID » du fichier « /etc/passwd ».
D'après le format utilisé pour ce fichier (explicité dans passwd(5)), tous les champs sont séparés par le caractère « : ». Par conséquent, le contenu de chaque champ interdit l'utilisation de ce caractère. Les champs de ce fichier auront donc comme propriété :
Les caractères contenus pour chaque champ du fichier /etc/passwd sont tous les caractères alphanumériques valides à l'exception du caractère « : ».Pour représenter une chaîne de caractères ne contenant pas « : » à l'aide des expressions régulières, nous allons utiliser les plages de caractères en excluant les caractères non valides. Nous aurons donc :
[^:]*
Les champs « login » et « UID » représentent les premier et troisième champ du fichier « /etc/passwd ». Par conséquent, la méthode à suivre pour décrire notre requête est la suivante :
Examinons maintenant l'expression régulière associée :
| Description | Expression | ||||
| début de ligne | ^ | ||||
| séquence de caractères ne contenant pas « : » | [^:]* | ||||
| le caractère « : » | : | ||||
| séquence de caractères ne contenant pas « : » | [^:]* | ||||
| le caractère « : » | : | ||||
| séquence de caractères ne contenant pas « : » | [^:]* | ||||
| séquence de caractères quelconques | .* | ||||
| fin de ligne | $ | 
En fonction des regroupements explicités précédemment, nous obtenons l'expression suivante :
^\([^:]*\)\(:[^:]*:\)\([^:]*\)\(.*$\)
Maintenant, il ne nous reste plus qu'à prendre tout ce qui correspond au premier et troisième regroupement dans chaque enregistrement (lignes arrivant sur l'entrée standard), et formater la sortie de la façon suivante :
donc :





Nous obtenons donc :
sed -e 's/^\([^:]*\)\(:[^:]*:\)\([^:]*\)\(.*$\)/\1\t\3/' /etc/passwd
 
 
 
 
 
 
 
 
