J'ai essayé avec vim, mais je suis ouvert à d'autres idées/suggestions.
Je voudrais effectuer une recherche et un remplacement dans un fichier de 12000 lignes.
Plus précisément, si une occurrence de "^ SetFontSize 28" existe après une définition de "^Hide" et avant le prochain "^Hide" ou "^Show", changez 28 en 18. Exemple ci-dessous.
Voici un extrait du fichier original.
Hide # Gear - Endgame
ItemLevel >= 77
Rarity = Magic
LinkedSockets >= 3
BaseType "Runic Hatchet"
SetTextColor 140 190 255 # Magic Item Highlight
SetFontSize 28
Hide # Gear - Endgame
ItemLevel >= 77
Rarity = Magic
Sockets >= 3
BaseType "Runic Hatchet"
SetTextColor 140 190 255 # Magic Item Highlight
SetFontSize 28
Show # Gear - Endgame
ItemLevel >= 83
Rarity = Normal
Sockets < 3
BaseType "Tiger Hook"
SetTextColor 240 240 240 # Normal Item Highlight
SetBackgroundColor 70 70 70
SetFontSize 28
Le résultat final pour le premier bloc "Cacher" ressemblerait à ceci :
Hide # Gear - Endgame
ItemLevel >= 77
Rarity = Magic
LinkedSockets >= 3
BaseType "Runic Hatchet"
SetTextColor 140 190 255 # Magic Item Highlight
SetFontSize 18
Remplacement de SetFontSize 28 par SetFontSize 18, mais seulement s'il apparaît dans un bloc "^Hide".
La méchante regex que j'ai essayé dans vim : :%s/^Hide\(.*\)SetFontSize 28$/Hide\1SetFontSize 18/g
Mais on m'a dit que le modèle n'a pas été trouvé. Veuillez me faire savoir si des informations supplémentaires sont nécessaires ou si ma demande n'est pas claire.