Les enregistrements
Ce chapitre se concentre sur les fichiers texte. Dans ceuxci, vous devez définir la structure de vos enregistrements. Bien
que tout soit possible, notamment avec des structures en arborescence comme le XML, vous pouvez initialement choisir
entre deux méthodes assez simples : les enregistrements avec délimiteurs ou à largeur fixe.
1. Les délimiteurs
Les enregistrements délimités sont courants sous Unix. Dans chaque ligne, les valeurs individuelles sont appelées des
champs et sont séparées entre elles par un caractère particulier appelé caractère de séparation ou caractère de
délimitation, ou enfin délimiteur. N’importe quel caractère peut convenir, cependant il ne doit pas se retrouver dans la
valeur d’un champ, ce qui aurait pour effet de casser la structure de l’enregistrement. Ce sont souvent le pointvirgule
";" ou les deux points ":" qui sont utilisés.
Les champs d’enregistrements sont généralement encadrés par des guillemets lorsqu’il s’agit de chaînes de caractères,
rien pour des valeurs numériques. Ce n’est pas une affirmation : ce n’est pas toujours le cas et c’est à vous de gérer le
type d’une valeur donnée, au sein de votre programme.
Voici un simple exemple de contenu de fichier délimité de type courant sous Unix :
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
Les plus perspicaces d’entre vous auront reconnu un morceau du fichier /etc/passwd qui contient quelques
informations sur les comptes des utilisateurs du système Unix. Chaque ligne est un enregistrement dont la structure
est la suivante :
q Un séparateur ":" délimite les différents champs.
q Il y a sept champs, numérotés (par convention) de 1 à 7.
q 1 er champ : nom de l’utilisateur (son login).
q 2 ème champ : indicateur de mot de passe (ici stocké ailleurs).
q 3 ème champ : UID, identifiant numérique unique de l’utilisateur.
q 4 ème champ : GID, identifiant du groupe de l’utilisateur (stocké ailleurs).
q 5 ème champ : commentaire libre.
q 6 ème champ : dossier personnel de l’utilisateur.
q 7 ème champ : l’interpréteur de commandes (shell) de connexion.
Vous voyez bien qu’il est possible de placer des informations très importantes dans un fichier texte.
La manipulation d’un tel fichier est assez évidente : il suffit de lire une ligne, puis de découper celleci champ par
champ, ce qui est plutôt simple car il suffit dès lors de trouver les délimiteurs. La plupart des langages proposent des
fonctions qui permettent de découper une chaîne selon des délimiteurs. Ce type de fichier a aussi bien des avantages
que des inconvénients :
q Du fait que les champs soient collés les uns aux autres et que chaque champ ne prend pas plus d’espace que
sa donnée occupe, fournit un réel avantage en terme d’occupation d’espace disque et de mémoire.
q Cependant, le traitement de découpage de la chaîne en fonction de la position forcément aléatoire d’un
- 1 -
© ENI Editions - All rigths reserved - Jonifar lina
151
Ce chapitre se concentre sur les fichiers texte. Dans ceuxci, vous devez définir la structure de vos enregistrements. Bien
que tout soit possible, notamment avec des structures en arborescence comme le XML, vous pouvez initialement choisir
entre deux méthodes assez simples : les enregistrements avec délimiteurs ou à largeur fixe.
1. Les délimiteurs
Les enregistrements délimités sont courants sous Unix. Dans chaque ligne, les valeurs individuelles sont appelées des
champs et sont séparées entre elles par un caractère particulier appelé caractère de séparation ou caractère de
délimitation, ou enfin délimiteur. N’importe quel caractère peut convenir, cependant il ne doit pas se retrouver dans la
valeur d’un champ, ce qui aurait pour effet de casser la structure de l’enregistrement. Ce sont souvent le pointvirgule
";" ou les deux points ":" qui sont utilisés.
Les champs d’enregistrements sont généralement encadrés par des guillemets lorsqu’il s’agit de chaînes de caractères,
rien pour des valeurs numériques. Ce n’est pas une affirmation : ce n’est pas toujours le cas et c’est à vous de gérer le
type d’une valeur donnée, au sein de votre programme.
Voici un simple exemple de contenu de fichier délimité de type courant sous Unix :
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
Les plus perspicaces d’entre vous auront reconnu un morceau du fichier /etc/passwd qui contient quelques
informations sur les comptes des utilisateurs du système Unix. Chaque ligne est un enregistrement dont la structure
est la suivante :
q Un séparateur ":" délimite les différents champs.
q Il y a sept champs, numérotés (par convention) de 1 à 7.
q 1 er champ : nom de l’utilisateur (son login).
q 2 ème champ : indicateur de mot de passe (ici stocké ailleurs).
q 3 ème champ : UID, identifiant numérique unique de l’utilisateur.
q 4 ème champ : GID, identifiant du groupe de l’utilisateur (stocké ailleurs).
q 5 ème champ : commentaire libre.
q 6 ème champ : dossier personnel de l’utilisateur.
q 7 ème champ : l’interpréteur de commandes (shell) de connexion.
Vous voyez bien qu’il est possible de placer des informations très importantes dans un fichier texte.
La manipulation d’un tel fichier est assez évidente : il suffit de lire une ligne, puis de découper celleci champ par
champ, ce qui est plutôt simple car il suffit dès lors de trouver les délimiteurs. La plupart des langages proposent des
fonctions qui permettent de découper une chaîne selon des délimiteurs. Ce type de fichier a aussi bien des avantages
que des inconvénients :
q Du fait que les champs soient collés les uns aux autres et que chaque champ ne prend pas plus d’espace que
sa donnée occupe, fournit un réel avantage en terme d’occupation d’espace disque et de mémoire.
q Cependant, le traitement de découpage de la chaîne en fonction de la position forcément aléatoire d’un
- 1 -
© ENI Editions - All rigths reserved - Jonifar lina
151
