Bonjour les développeurs!!!
Je chercherais à créer un script shell me permettant d'isoler des blocs de texte provenant d'un fichier formaté d'une certaine manière. Puis, effectuer un traitement bloc par bloc pour le reformater de manière à ce que la sortie soit exploitable.
Je veux faire un traitement bloc par bloc car certains champs n'apparaissent pas dans tous les blocs.
Exemple :
Imaginons un système de notes dépendant d'un terminal propriétaire.
Celui-ci va donner des sorties comme-ci lorsqu'on l'interroge (tout est fictif mais traduit bien mes besoins) :
COM : compte n°
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 =BEGIN COM=234564 GRAD=1 ***TYPE=1 PARAM=0 ***TYPE=2 PARAM=0 CAT=ELV SERV=VIEW+SHOW+EDIT =END =BEGIN COM=234565 CAT=IND SERV=VIEW =END
CAT : catégorie (IND = individu quelconque, ELV = eleve)
SERV : service (SHOW = Partager ses notes, EDIT = Mettre ses notes, VIEW = Voir ses notes ou les notes partagées)
TYPE : type de notes (Devoir Maison, Devoir Samedi, ...), PARAM : type de type, note obligatoire ou non, ...
GRAD : Matières
On voit bien qu'il y a plusieurs blocs et que dans chaque blocs on a pas forcément tous les champs.
J'aimerais donc isoler le premier bloc, le traiter, reformater celui-ci puis faire de même pour le second blocs et les autres.
Le format de sortie serait par exemple le suivant :
?INSERT. // commande
COM=234564, GRAD=1:TYPE=1 PARAM=0:TYPE=2 PARAM=0,CAT=ELV,SERV=VIEW+SHOW+EDIT#
COM=234565, CAT=IND, SERV=VIEW;
('#' : ligne intermédiaire, ':' : séparation pour les paramètre d'une instruction, ';' : fin de la commande)
(Dans notre cas, ça générerait une macro que le terminal pourrait utiliser en cas de crash)
Déjà je sais que pour récupérer des blocs en supprimant les autres lignes "parasites" il suffit de faire :
awk '/=BEGIN/, /=END/' fichier
Je vous remercie d'avance.
Kurapix
Partager