IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Parser un fichier .ini


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Par défaut Parser un fichier .ini
    Bonjour, dans le cadre du portage de mon programme de Windows à linux, je dois transformer mes fichiers .bat en .sh.

    Mon porblème est que je n'arrive pas à parser mon fichier.ini

    je vous donne la code que j'ai en batch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /F "tokens=1,2 delims==" %%i in (normalize.ini) do set %%i=%%j
    je dois donc le transfomer en sh:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in `cat normalize.ini`
    	do  
    		left=`awk -F= {$1} $i`
    		right = `awk -F= '{$2}'$i`
    		$left="$right"
    	done
    Est-ce que je me trompe dans ma syntaxe??

    Merci d'avance

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut Re: [Shell Script] Parser un fichier .ini
    Citation Envoyé par t_om84
    Bonjour, dans le cadre du portage de mon programme de Windows à linux, je dois transformer mes fichiers .bat en .sh.

    Mon porblème est que je n'arrive pas à parser mon fichier.ini

    je vous donne la code que j'ai en batch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /F "tokens=1,2 delims==" %%i in (normalize.ini) do set %%i=%%j
    je dois donc le transfomer en sh:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in `cat normalize.ini`
    	do  
    		left=`awk -F= {$1} $i`
    		right = `awk -F= '{$2}'$i`
    		$left="$right"
    	done
    Est-ce que je me trompe dans ma syntaxe??

    Merci d'avance
    ça c'est faux
    c'est
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Par défaut
    ok, merci,
    mais mon code est-il juste?

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Pour tout te dire, je n'ai pas la doc d'awk sous les yeux, et je ne sais pas ce qu'est sensé faire ton traitement.

    Par ailleurs, je crois que ton for prend mot après mot et non ligne après ligne.

    Pour prendre ligne par ligne on peut faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    cat < users.txt | while true
      do
      read ligne
      if [ "$ligne" = "" ]; then break; fi
      ...
      done
    Mais bon, si chaque ligne de .ini ne contient aucun espace, ta façon de faire ne pose pas de problème.

    Mais je suis pas devin :
    pas d'exemple de ce que contient le .ini
    pas d'explication sur ce que tu veux faire

    => pas de solution
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Par défaut
    ok!!

    exemple de mon fichier.ini

    text_viewer=command1
    pdf_viewer=command2
    ps_viewer=command3


    je voudrais parser mon fichier ini afin de stocker (ici dans mon exemple) command1 dans la variable text_viewer, command2 dans la variable pdf_viewer....

  6. #6
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Citation Envoyé par t_om84
    ok!!

    exemple de mon fichier.ini

    text_viewer=command1
    pdf_viewer=command2
    ps_viewer=command3

    je voudrais parser mon fichier ini afin de stocker (ici dans mon exemple) command1 dans la variable text_viewer, command2 dans la variable pdf_viewer....
    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
    16
    17
    18
    19
    20
    21
    etienne@info1:~/shelltest $ ls -l test.sh
    -rwxr-xr-x  1 etienne etienne 131 2005-07-21 15:01 test.sh
     
    etienne@info1:~/shelltest $ cat test.sh
    #!/bin/sh
    for i in `cat fic`
     do
       val1=`echo $i | cut -d'=' -f1`
       val2=`echo $i | cut -d'=' -f2`
       echo "val1=$val1 ; val2=$val2"
     done
     
    etienne@info1:~/shelltest $ ./test.sh
    val1=text_viewer ; val2=command1
    val1=pdf_viewer ; val2=command2
    val1=ps_viewer ; val2=command3
     
    etienne@info1:~/shelltest $ cat fic
    text_viewer=command1
    pdf_viewer=command2
    ps_viewer=command3
    je n'ai pas utilisé awk parceque ton problème est "relativement" simple.

    Voici un lien sur le script shell en général et en français:
    http://madchat.org/coding/sh/write_a_shell_script-fr.htm

    et puis google linux est bien intéressant pour les recherches:
    http://www.google.com/linux
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Par défaut
    Merci pour l'exemple, et pour le lien.

    bon je viens de trouver comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in `cat normalize.ini`
    	do  
    		left=`echo "$i"|awk -F= '{print $1}'`
    		right=`echo "$i"|awk -F= '{print $2}'`
    		eval ${left}="$right"
    	done
    pour l'instant ça marche, je vais continuer..

    Merci beaucoup

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    je viens de comprendre, tu veux que la variable de nom text_viewer prenne pour valeur la commande

    Il me faut du temps ... désolé
    ça me paraît bizarrement fait.

    comment vas tu récupérer le nom de text_viewer par la suite ?

    Peut être qu'en utilisant un export tu t'en sortirais.

    du style
    Pour que tes valeurs exportées restent dans l'environnement qui a lancé ton script, il faudra lancé le script ainsi:
    et non pas
    Comme on le fait normalement.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Par défaut
    ben quand je fais eval $(left)="$right"
    ca me copie la commande dans la variable

    mon fichier ini:
    text_viewer=gedit

    par exemple

    si je fais un

    echo "$text_viewer"

    ca m'affiche => gedit (par exemple)

  10. #10
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Citation Envoyé par t_om84
    ben quand je fais eval $(left)="$right"
    ca me copie la commande dans la variable

    mon fichier ini:
    text_viewer=gedit

    par exemple

    si je fais un

    echo "$text_viewer"

    ca m'affiche => gedit (par exemple)
    je ne comprends pas l'intérêt de passer par un .ini

    Autant directement l'écrire dans le .sh

    Puisque plus tard dans le script, tu utilises effectivement $text_viewer, ça n'est pas dynamique du tout.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Par défaut
    en fait au depart j'ai un programme python qui tourne sous windows, et qui lance des .bat,

    donc pour le porter sous linux, je dois changer mes .bat en .sh

    et sous windows j'utilise un .ini donc voila

  12. #12
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Ok.
    Félicitations alors.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.2] gettext : parser un fichier INI
    Par elderion dans le forum Langage
    Réponses: 12
    Dernier message: 18/04/2011, 17h12
  2. Lecture d'un fichier ini et parser un fichier
    Par turbo_chess dans le forum C
    Réponses: 2
    Dernier message: 07/03/2009, 10h53
  3. Parser un fichier de configuration de type ini
    Par arnaudperfect dans le forum Débuter
    Réponses: 7
    Dernier message: 17/03/2008, 14h10
  4. Parser un fichier INI
    Par 78alex78 dans le forum Langage
    Réponses: 1
    Dernier message: 09/01/2007, 16h28
  5. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo