suivant: Extraction des anciennes entrées
monter: Développement
précédent: Développement
Table des matières
Index
Détermination des entrées de référence
Les entrées de références correspondent aux anciennes informations, modifiées
de telle sorte qu'elles puissent être exploitable directement. En effet, la
convention adoptée par exemple, pour le champ "informations" ou
"GCOS" du fichier "passwd(5)", est la suivante :
- le prénom
- le nom en majuscules,
- le caractère "-" délimité par un espace de chaque côté,
- la classe.
Par conséquent, d'une année sur l'autre, la classe peut changer. L'ancienne
information n'est donc plus valable dans sa globalité, mais par contre
la totalité de ce champ sans l'information "classe" est valide et
permet, en plus, de localiser un enregistrement de façon unique.
Il nous faut donc prendre l'ancien fichier "passwd(5)" et enlever
l'information "classe". Ceci est effectué en supprimant les cinq
derniers caractères du cinquième champ (le champ "GCOS" du fichier
"passwd(5)". Le résultat nous servira donc de référence pour tout
traitement exploitant les anciennes entrées du fichier de définition des
utilisateurs, car nous serons sûr que toutes les renseignements présents seront
valides. Nous obtenons donc la requête suivante :
$AWK '
BEGIN { FS=":"}
{
field = substr ($5, 1, length($5) - 5)
printf ("%s:%s:%s:%s:%s:%s:%s\n",
$1, $2, $3, $4, field, $6, $7)
}
' $PASSWD > $PASSWD_REF
Il en va de même pour le fichier associant "username OpenVMS" avec
le prénom, le nom et la classe de la personne. Le format de ce fichier est :
- le username OpenVMS,
- le caractère "-" délimité par un espace de chaque côté,
- la classe avec, éventuellement, l'option.
Par conséquent, nous ne connaissons par la longueur de la chaine représentant
la classe. Par contre, l'information "classe", y compris le délimiteur,
peut être représenté par l'expression régulière suivante :
- [0-9][ABC].*$
L'opération à effectuer est donc de supprimer tout ce qui correspond à cette
expression, ou bien remplacer tout le texte associé à cette expression par
"rien".La commande la plus appropriée est "sed(1)". En
effet, la notion de champ n'intervient pas, il suffit d'effectuer
une substitution sur chaque ligne. La commande associée est donc :
sed -e 's/ - [0-9][ABC].*$//' $WHO > $WHO_REF
suivant: Extraction des anciennes entrées
monter: Développement
précédent: Développement
Table des matières
Index
baudry@esme.fr