Essayons de faire clair...#On définit une chaîne de caractère que l'on cherche et qui comment par $.*=.*reqmysql , par contre pourquoi |\t\+\ je n'ai pas compris ca
/\(^\|\t\+\)\$.*=.*reqmysql/{
^ Désigne une chaîne nulle en début de ligne.
\t Désigne une tabulation.
\+ Correspond à une ou plusieurs occurrence(s) de l'expression précédente. (ici la tabulation)
^$ On cible le caractère dollar situé en début de ligne
\| Un pipe entre 2 motifs permet de faire un OU. Le caractère doit être protégé pour ne pas être interprété littéralement.
\(...\) Permet de regrouper des expressions régulières.
\(^\|\t\+\)\$ Le pipe (\|) est placé entre le caractère marquant le début d'une ligne (^) et la ou les tabulation(s) (\t\+) et ces expressions régulières sont regroupées entre parenthèses et ceci avant le signe dollar($) protégé pour l'occasion afin qu'il ne soit pas interprété comme la fin de la ligne.
Donc il faut lire qu'on cherche soit un signe dollar en début de ligne, soit une ou plusieurs tabulations suivie(s) du signe dollar.
On doit pouvoir en fin de compte se passer du OU et donc du pipe et par la même des sous-expressions (entre parenthèses), un truc comme ça ^\t*\$.*=.*reqmysql/{ devrait suffire....
Oui. J'ai rajouté cette condition en rapport à tes lignes vides dans tes fichiers d'hier. Mais bon, je suppose qu'avec la dernière modification de ce matin (l'ajout de =.*reqmysql), ce n'est plus nécessaire#là je n'ai pas compris, \n signifie saut de ligne
/\n *$/{
En fin de compte essaies ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 :z /^\t*\$.*=.*reqmysql/{ /) *\(;\|; *#.*\)$/ !{ N b z } /^\t*\$.*) *\(;\|; *#.*\)$/ { s/\(.*\$[^ ]*[^=]*\)\( *=.*reqmysql.*) *;.*\)$/\1\2\n\1->execute();/ b } }
Partager