Forum Programmation.shell modifier des fichiers

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
15
sept.
2025

Bsr,

je cherche à scripter des modifications de fichiers de type

  • décommenter une ligne du type

    #foobar = 0
    si elle existe pour mettre
    #foobar = 1
    ou la créer si elle n'exsite pas

  • modifier des entrées de fichiers de type ini

    [section]
    entree = pouet

    Je sais que l'on peut faire tout ça avec grep sed des regex etc mais je ne suis pas du tout à l'aise avec ça.
    Existe-t-il des fonctions ou librairies d'un peu plus haut niveau pour ce genre de manipulations ?

  • # lite ton cours ?

    Posté par  . Évalué à 4 (+1/-0).

    non parce que sinon, tu peux reecrire sed/grep/awk en C, perl, voire en python, mais c'est un overkill non ?

  • # pour les ini tout du moins

    Posté par  . Évalué à 4 (+2/-1). Dernière modification le 16 septembre 2025 à 07:18.

    il existes des bibliothèque en C :)

    sinon on cherchant un peu (bon grande expérience au niveau des mots clés (ini command line modification))

    https://stackoverflow.com/questions/22834680/simple-linux-command-line-command-to-modify-an-option-in-a-ini-like-config-file

    la question à 10 ans :)

    J'aime beaucoup le détournement de git config :D

    mais sinon on y trouve aussi un outil dédié aux .ini

    (par contre si c'est pour répondre à un exercice c'est hors scope je le crains :)

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

  • # overkill

    Posté par  . Évalué à 1 (+0/-0).

    Hello,

    Tu peux toujours faire mumuse a installer ansible pour faire usage des commandes dites ad hoc et plus specifiquement module lineinfile dans ton cas, mais t'as aussi vite fait de te familiariser avec grep, sed et plus generalement les regexp

    ++
    Gi)

  • # crudini

    Posté par  . Évalué à 1 (+0/-0).

    Pour modifier des fichiers .ini depuis le terminal ou un script shell, tu peux utiliser crudini.

  • # Augeas

    Posté par  . Évalué à 2 (+0/-0).

    Ça me fait penser à Augeas et ses « lenses », qui sont des parsers spécifiques aux différents formats de fichiers qui construisent des arbres de configuration à manipuler, propres à Augeas. Ils en parlent ici :
    https://augeas.net/docs/lenses.html
    Mais commence peut-être par la documentation générale pour comprendre le fonctionnement d’Augeas. Ça te parlera si tu connais XPath.

    Au passage, j’ai essayé, et c’est toujours aussi galère à utiliser… en bidouillant, voilà ce que j’ai pu faire pour une démo interactive, sur ton deuxième exemple, disons appelé test.ini ::

    $ augtool -i --root .
    augtool> set /augeas/load/Puppet/incl[0] "/test.ini"
    augtool> load
    augtool> get /files/tmp/test.ini/section/entree
    /files/tmp/test.ini/section/entree = pouet
    augtool> set /files/tmp/test.ini/section/entree 42
    augtool> save
    Saved 1 file(s)
    $ cat test.ini
    [section]
    entree = 42
    

    (pour savoir pourquoi j’utilise le Lens puppet voir https://www.mail-archive.com/augeas-devel@redhat.com/msg04350.html )

  • # Python

    Posté par  (site web personnel, Mastodon) . Évalué à 0 (+0/-1).

    Perso, je réserve bash au inits simple. Après dès que l'on veut aller plus loin le Python est bien plus puissant. Après l'inconvénient de Python ce sont les perfs… mais c'est tout relatif, tant que tu n'a pas 10 000 fichiers à modifier régulièrement, ça fait le job.

    Je n'ai pas regarder, mais en Python, tu peux trouver pas mal de librairies pour tout faire. J'entends par là que si la regexp suffit tant mieux, mais si tu veux un parser, quelque soit le langage, tu trouvera.

    Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.