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 -
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
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:
- Modification de fichier avec bash
- Fichier bin - Guide
- Fichier epub - Guide
- Suivi de modification word - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
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" :
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 $
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
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
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).
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).