next up previous contents index
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 :

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 :

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


next up previous contents index
suivant: Extraction des anciennes entrées monter: Développement précédent: Développement   Table des matières   Index
baudry@esme.fr