Quelqu'un connaît-il un logiciel qui permettrait d'ajouter/modifier automatiquement des lignes à un fichier de type texte. J'utilise Search & Replace mais je n'arrive qu'à lui faire rechercher/remplacer des tronçons de texte. Or là, il s'agirait d'ajouter une ligne basée sur une ligne existante, puis de la modifier partiellement.
Exemple concret :
map_Kd ../texture/wood.dds
Il s'agirait de dupliquer cette ligne pour avoir :
map_Kd ../texture/wood.dds
map_bump -bm 0.5000 ../texture/wood_n.dds
Un logiciel comme Search & Replace me permet par exemple de remplacer map_Kd par map_bump -bm 0.5000 et .dds par _n.dds mais je n'arrive pas à lui faire copier/modifier une ligne donnée.
... et comme je dois faire l'opération plusieurs centaines de fois, je me disais qu'une procédure automatisée, ce serait plutôt pas mal...
merci !
Oyez, oyez !
Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !
Merci à toutes et à tous pour votre participation !
N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...
Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !
Merci à toutes et à tous pour votre participation !
N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...
[PROG] Recherche logiciel de modification automatisée de fichiers textes
- Freddy_Gwendo
- Adepte de Grondemarteau
- Orbe ancien
- Messages : 5877
- Enregistré le : sam. 23 avr. 2011, 00:26
- Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
- Statut : Hors ligne
.
Question stupide : as-tu essayé avec WeiDU ? Il gère très bien l'ajout de lignes en fin de fichier (APPEND) et le remplacement de ligne par une ou plusieurs autres (en utilisant les variables %LNL%, %WNL%)
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Moddeur qui s'arrache les cheveux...
... avec Menace sur le Royaume de Diamant Éternel.
- Isaya
- Adepte de Grondemarteau
- Planaire
- Messages : 6990
- Enregistré le : mar. 22 juil. 2003, 21:03
- Localisation : Plaisir
- Contact :
- Statut : Hors ligne
.
Ce serait peut-être possible avec notepad++ en utilisant une expression régulière mais il faudrait d'autres exemples de texte d'origine et de ligne à ajouter afin de déterminer un pattern à introduire sous forme d'expression. Se pose aussi la question du texte à insérer dans la copie et qui nécessiterait d'être toujours identique.
Exemple avec le seul élément connu : remplacer
Les séquences \1, \2, etc. font référence au numéro de bloc de texte mis entre parenthèse dans la recherche. On peut donc à l'envie les utiliser ou les ignorer dans le texte de remplacement.
La difficulté réside dans la généricité qu'il faudra introduire dans au moins les trois premiers textes entre parenthèses (on peut imaginer que .dds ne variera pas, mais cela reste à voir) pour que cela traite toutes les lignes qui t'intéressent.
Même si ce processus pourrait parfaitement s'automatiser (Remplacer tout), il te vaudra mieux les valider un par un en vérifiant que l'expression régulière aura bien attrapé le "bon" texte (notepad++ surligne le texte trouvé).
Exemple avec le seul élément connu : remplacer
par(map_)(Kd) (..\/texture\/wood)(\.dds)
en cochant le bouton radio "Expression régulière" dans la fenêtre de remplacement.\1\2 \3\4\n\1bump -bm 0.5000 \3_n\4
Les séquences \1, \2, etc. font référence au numéro de bloc de texte mis entre parenthèse dans la recherche. On peut donc à l'envie les utiliser ou les ignorer dans le texte de remplacement.
La difficulté réside dans la généricité qu'il faudra introduire dans au moins les trois premiers textes entre parenthèses (on peut imaginer que .dds ne variera pas, mais cela reste à voir) pour que cela traite toutes les lignes qui t'intéressent.
Même si ce processus pourrait parfaitement s'automatiser (Remplacer tout), il te vaudra mieux les valider un par un en vérifiant que l'expression régulière aura bien attrapé le "bon" texte (notepad++ surligne le texte trouvé).
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
- Luren
- Adepte de Grondemarteau
- Ver charognard
- Messages : 656
- Enregistré le : dim. 20 juin 2010, 08:51
- Localisation : Sûrement quelque part mais je n'arrive pas à bien voir où.
- Statut : Hors ligne
.
Merci de vos réponses !
@Freddy : J'ignorais que l'on pouvais utiliser Weidu comme une application indépendante, et je n'ai pas de connaissances suffisantes pour lui faire faire ce que je voudrais qu'il fasse...difficile donc pour moi de mettre en pratique ton idée.
@Isaya. Merci des pistes que tu me donnes. J'utilise notepad++ et j'utilise souvent sa fonction de recherche/remplacement, mais pas avec les expressions régulières. Je vais creuser la question.
Pour ce que je veux faire, les infos que tu me communiques correspondent parfaitement aux textes à rechercher remplacer. Le truc sur lequel je bute, c'est la duplication automatisée d'une ligne. Pour reprendre l'exemple que j'ai donné, il s'agit d'ajouter une ligne avec de nouvelles entrées, mais comme j'obtiens par duplication 2 lignes identiques, il est nécessaire d'ajouter un marqueur ou de modifier à la volée la ligne que je duplique, afin que lors de l'opération de recherche/remplacement seule un ligne sur les deux soit modifiée.
Ci-dessous un exemple d'un fichier .mtl avant/après modification
Ce type de fichier accompagne les fichiers .obj, et contient les paramètres (basiques) des matériaux associés à des modèles 3D. Dans mon exemple je souhaite simplement ajouter, pour chaque matériau, une ligne correspondant aux fichiers bump servant à donner un effet de relief à une texture. Pour ne pas se mélanger les pinceaux, les fichiers ont la même dénomination que les textures, avec juste le _n (n pour normal). J'indique aussi une valeur (-bm 0.5000) correspondant à l'intensité de l'effet de relief.
Edit : Ah oui, et la ligne KS 0.000000 0.000000 0.000000, correspond à la modification d'un effet lumineux associé à la texture.
@Freddy : J'ignorais que l'on pouvais utiliser Weidu comme une application indépendante, et je n'ai pas de connaissances suffisantes pour lui faire faire ce que je voudrais qu'il fasse...difficile donc pour moi de mettre en pratique ton idée.
@Isaya. Merci des pistes que tu me donnes. J'utilise notepad++ et j'utilise souvent sa fonction de recherche/remplacement, mais pas avec les expressions régulières. Je vais creuser la question.
Pour ce que je veux faire, les infos que tu me communiques correspondent parfaitement aux textes à rechercher remplacer. Le truc sur lequel je bute, c'est la duplication automatisée d'une ligne. Pour reprendre l'exemple que j'ai donné, il s'agit d'ajouter une ligne avec de nouvelles entrées, mais comme j'obtiens par duplication 2 lignes identiques, il est nécessaire d'ajouter un marqueur ou de modifier à la volée la ligne que je duplique, afin que lors de l'opération de recherche/remplacement seule un ligne sur les deux soit modifiée.
Ci-dessous un exemple d'un fichier .mtl avant/après modification
► Afficher le texte
Edit : Ah oui, et la ligne KS 0.000000 0.000000 0.000000, correspond à la modification d'un effet lumineux associé à la texture.
- Luren
- Adepte de Grondemarteau
- Ver charognard
- Messages : 656
- Enregistré le : dim. 20 juin 2010, 08:51
- Localisation : Sûrement quelque part mais je n'arrive pas à bien voir où.
- Statut : Hors ligne
.
J'ai trouvé la réponse !
Avec Notepad++ :
Recherche :
Le répertoire (comme ../texture/wood.dds de l'exemple), qui peut être variable, par le nom de la texture et son emplacement, est repéré lors de la recherche par \s+(\S+) , c'est à dire un espace (\s) de longueur variable (+) suivi d'un non espace (\S), c'est à dire des caractères, de longueur variable (+). Sa mise entre parenthèse permet de l'appeler lors du remplacement (via \1)
Merci Isaya
Avec Notepad++ :
Recherche :
Remplacer par :map_Kd\s+(\S+)\.dds
ou
(map_)(Kd)(\s+\S+)(\.dds)
Le truc, c'est qu'au lieu d'ajouter une ligne, on la remplace par deux lignes. Une qui recopie l'originale (map_Kd \1.dds), suivie d'un retour à la ligne (\n) puis de l'écriture de la seconde ligne (map_bump -bm 0.4000 \1_n.dds)map_Kd \1.dds\nmap_bump -bm 0.4000 \1_n.dds
ou
\1\2\3\4\n\1bump -bm 0.4000\3_n\4
Le répertoire (comme ../texture/wood.dds de l'exemple), qui peut être variable, par le nom de la texture et son emplacement, est repéré lors de la recherche par \s+(\S+) , c'est à dire un espace (\s) de longueur variable (+) suivi d'un non espace (\S), c'est à dire des caractères, de longueur variable (+). Sa mise entre parenthèse permet de l'appeler lors du remplacement (via \1)
Merci Isaya
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités