Creer plusieurs fichier cfg avec une seule variable qui differe

Signaler
-
Messages postés
29583
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 février 2021
-
Bonjour,

J'ai un fichier cfg pour une outil de mon boulot qui vient chercher un fichier précis pour l'utiliser.
Or il se trouve que j'ai besoin de faire ça pour plusieurs fichiers.
Les fichiers se trouve dans un répertoire avec des sous dossiers.

Pour essayer d'être un peu plus clair, voici la tète de mon cfg:

[INPUT]
jexpoint_file = .
solver_mode = 2
solver_single_file = .
solver_multiple_folder = .
solver_multiple_filter = *.op2
jloads_file = .

[OPTIONS]
subcases_list =
nodes_list =
split_subcases = False
subcase_fields = 4369
split_nodes = False
split_range = 5000
fx_extraction = True
fy_extraction = True
fz_extraction = True
mx_extraction = True
my_extraction = True
mz_extraction = True
fx_stiff_extraction = True
my_stiff_extraction = True
fz_web_extraction = True
fy_skin_extraction = True
fz_skin_extraction = True

[OUTPUT]
generate_jgpf_files = False
folder_jgpf_files =
generate_jloads_files = False
folder_jloads_files = .
generate_csv_files = False
folder_csv_files = .
overwrite_files = False




J'ai besoin dans [INPUT] de changer mon lien vers mes jexpoint file. Le reste du fichier config ne changera pas.
J'aimerai donc creer un fichier config par fichier jexpointfile.
Or je ne sais jamais combien j'aurai de jexpoint. Si j'en ai beaucoup ça devient laborieux à la main.
Je voudrais donc automatiser la creation des cfg.
J'avais penser utiliser la commande sed mais ça remplace la ligne input et écrase le fichier. Et encore il faut que je lui donne les jexpoint un par un.

2 réponses

Messages postés
29583
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 février 2021
7 032
Bonjour,

Il suffit d'écrire un petit script avec une boucle qui itère sur les différentes valeurs de jexpointfile et qui génère un fichier de configuration pour chaque valeur possible. Si cette liste de valeurs est récupérable au travers d'une commande, alors tu peux automatiser le tout avec un script (par exemple, shell ou dans n'importe quel langage de ton choix).

Supposons que ton fichier de départ s'appelle
exemple.txt
. Supposons que tu veuilles générér un fichier (
exemple_0.txt
,
exemple_1.txt
, etc) par nom de fichiers présent dans
/etc/X11
(donc le résultat de la commande
ls -1 /etc/X11
). Alors un script (appelons le
script.sh
et plaçons le dans le même répertoire que
exemple.txt
) est :

#!/bin/bash

i=0
for x in $(ls -1 /etc/X11)
do
        cp exemple.txt exemple_$i.txt
        sed -i 's/jexpoint_file = .*/jexpoint_file = '$x'/' exemple_$i.txt
        i=$((i+1))
done
exit 0


Pour le lancer, dans le répertoire qui le contient :

chmod a+x script.sh
./script.sh


Bonne chance
Merci pour cette réponse.

Par contre j'ai d'autre fichier dans /etc/X11 que des jexpoint.
Du coup j'aimerai n'implementer que par rapport aux jexpoint. J'imagine qu'il faut proceder par extension donc quelquechose du genre

"for x in `ls *.jexpoint`
do"
Messages postés
29583
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 février 2021
7 032
Tout à fait, lister les fichier de /etc/X11 n'était qu'une manière de générer des chemins vers des fichiers arbitraires. Il faut dans ton cas remplacer cette commande par ce qu'il faut.