Creer plusieurs fichier cfg avec une seule variable qui differe

Fermé
Give - 18 févr. 2021 à 11:41
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 19 févr. 2021 à 01:20
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.
A voir également:

2 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 18 févr. 2021 à 13:14
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
0
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"
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
19 févr. 2021 à 01:20
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.
0