Mandrake Linux Archives: confirme@linux-mandrake.com
Mandrake Linux: confirme@linux-mandrake.com
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
- From: CC
- Subject: Re: [Confirme] parsing fichier style .ini
- Date: 31 Aug 2004 10:35:31 -0000
Selon Jérôme Martin <jerome.f.martin@free.fr>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Le lundi 30 Août 2004 22:17, cc a écrit :
> > Bonsoir la liste,
> >
> > Avis aux pros de awk, perl ou autres
> >
> > Je cherche à récupérer le contenu d'une section dans un fichier du même
> > type que les fichiers .ini de win, ou, plus linuxien, que le fichier de
> > conf de samba :
> > début de la section :
> > [section]
> > paramètre1=valeur1
> > ....
> >
> > la fin de la section étant une ligne vide ou le début de la section
> > suivante, ou la fin du fichier.
> >
> > Je veux pouvoir récupérer tout ce qui est contenu dans la section, mais
> > pas plus !
> > Avec awk, je n'arrive pas à éliminer le titre de la section ni la ligne
> > vide (commande awk '/^\[.*\]/,/^$/ {print $0}')
> > Quelqu'un a-t-il une idée ?
> > Merci de vos lumières
>
> Voilà en perl uniligne pour rechercher la section2 :
> perl -ne ' /^\[section2\]/ && do { $f = 1; next; }; (/^$/ || /^\[\w+\]/) &&
> do
> {$f = 0}; $f && print' monfichier.ini
>
> Par contre je comprends pas le rôle de la ligne vide. Si tu as
> [section1]
> param1=val1
>
> param2=val2
> [section2]
> ...
>
> Le param2 sera perdu. Dans le fichier smb.conf, il y a des tas de lignes qui
> facilitent la lecture mais sont quand même dans la section.
>
> Dans le cas ou tu voudrais quand même garder le param2 :
> perl -ne ' /^\[section2\]/ && do { $f = 1; next; }; /^\[\w+\]/ && do {$f =
> 0};
> $f && print' monfichier.ini
>
> Quelques explications :
> l'option -n permet de lire le fichier ligne par ligne et d'exécuter le bout
> de
> code donné par -e.
> Ensuite, si ma ligne matche avec la [section2], je positionne le flag $f à 1
> et je passe à la ligne suivante.
> Si la ligne matche avec un titre de section (forcément autre que celui
> recherché), je passe le flag à 0. Pour les autres lignes, si le flag est à 1,
> j'affiche la ligne.
>
> Jérôme
Merci pour ton bout de code (je crois qu'il faut que je me mette à perl !)
C'est tout à fait ce que je cherchais.
Pour les lignes vides, en fait, dans le fichier que je dois analyser, chaque
section est séparée de la suivante par une ligne vide, et il n'y a aucune ligne
vide dans une section. Mais s'il y en avait, il faudrait que je puisse lire tous
les paramètres de la section, bien sûr !
En mieux, il faudrait aussi éliminer les commentaires, mais ça, je peux le faire
avant sur le fichier à traiter (dans le cas de mon fichier, il n'y en a pas :
c'est un fichier .inf de win).
Le but de l'opération : à partir d'un fichier .inf d'installation d'imprimante
win, récupérer la liste des fichiers du pilote de manière à automatiser
l'upload des pilotes sur le serveur d'impression linux.
Il y donc encore d'autres manips avant d'arriver au résultat ;-)
--
CC
____________________________________________________ Want to buy your Pack or Services from MandrakeSoft? Go to http://www.mandrakestore.com Join the Club : http://www.mandrakeclub.com ____________________________________________________
- Replies:
- Re: [Confirme] parsing fichier style .ini
- From: Jérôme Martin
- Re: [Confirme] parsing fichier style .ini
- References:
- [Confirme] parsing fichier style .ini
- From: cc
- Re: [Confirme] parsing fichier style .ini
- From: Jérôme Martin
- [Confirme] parsing fichier style .ini
- Prev by Date: Re: [Confirme] ATI Radeon 9600 et pas de 3D! RESOLU
- Next by Date: [Confirme] Tux Racer
- Previous by thread: Re: [Confirme] parsing fichier style .ini
- Next by thread: Re: [Confirme] parsing fichier style .ini
- Index(es):
