Modification de fichier avec bash

VauRDeC Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   -  
VauRDeC Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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
VauRDeC Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   3
 
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
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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).
0
VauRDeC Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci infiniment zipe31.

VauµRDeC
0