Modification de fichier avec bash

Bonjour,

Alors voilà, j'ai des programmes fortran qui se servent tous d'un fichier de paramètres.
Ce que j'aimerais faire c'est pouvoir modifier ce qui se trouve dans ce fichier de paramètre en me servant d'un script bash. Au lieu, d'ouvrir le fichier avec un éditeur de texte j'aimerais bien que ce soit l'exécutable de mon script qui aille directement le modifier.
Le fichier de paramètres est écrit très simplement, il est du genre:
! Valeur de la variable A:
6.4
! Valeur de la variable B:
9.9

C'est donc changer, à l'aide de "mon" super script exécutable , les valeurs "6.4" et "9.9" que j'aimerais
L'intérêt c'est que mon script bash va aussi compiler et exécuter mes programmes fortran, mais bon ça je l'ai déjà fait

Merci d'avance.

VaµRDeC

2 réponses

  1. Contributeur
    Salut,

    Si ton fichier est figé et que tu connais le numéro des lignes à changer (à défaut de numéro, un motif fera très bien l'affaire aussi), voila un exemple avec l'utilisation de "sed" :

    $ cat foo.sh 
    #! /bin/bash
    
    if [[ ${#} -lt 2 ]]
    then echo "Paramètres manquants"
    exit 3
    fi
    
    sed -i "2c\
    $1
    " plop
    
    sed -i "4c\
    $2
    " plop
    
    $ cat plop 
    ! Valeur de la variable A:
    6.4
    ! Valeur de la variable B:
    9.9
    
    $ ./foo.sh 
    Paramètres manquants
    
    $ ./foo.sh 5.5 8.6
    
    $ cat plop 
    ! Valeur de la variable A:
    5.5
    ! Valeur de la variable B:
    8.6
    
    $
    1. Merci énormément pour ton message complet!!!
      Etant donné que je ne connais pratiquement rien au bash,
      pourrais tu stp me dire un peu ce que font les paragraphes??
      Je sais que c'est trop demandé mais merci d'avance

      VaµRDeC
      1. Contributeur
        if [[ ${#} -lt 2 ]]
        On teste le nombre de paramètres passés au script.
        [[ ... ]] permet de tester ce qui se trouve entre les crochets
        $# contient le nombre de paramètres
        -lt 2 Inférieur à 2 (lether than)

        then echo "Paramètres manquants"
        Si la condition du test est vraie (moins de 2 paramètres) on affiche un message

        exit 3
        On sort du script en précisant une valeur d'échec (utile pour des fins de débogages)

        fi
        Achève la condition "if"

        sed -i "2c\
        $1
        " plop

        Que l'on pourrait aussi écrire : sed -i "2c $1" plop
        sed "..." l'application (Stream Editor = Éditeur de flux) (voir dans la FAQ : SED)
        -i une option de "sed" afin d'éditer "sur place (in-place) le fichier d'entrée et donc de modifier celui-ci
        2 la ligne où doit s'appliquer la commande qui suit
        c la commande qui sert à échanger le contenu ciblé.
        $1 premier paramètre du script qui contient la valeur à modifier dans le fichier.
        plop le fichier

        Note les quotes doubles autour de l'expression de "sed". Cela permet d'interpréter les variables ($1 et $2).
      2. Merci infiniment zipe31.

        VauµRDeC