A voir également:
- Equivalent preg_match_all[PHP] en SHELL
- Classic shell - Télécharger - Personnalisation
- Équivalent coco - Accueil - Réseaux sociaux
- Equivalent coco - Accueil - Réseaux sociaux
- Equivalent wawacity - Accueil - Outils
- Equivalent begone android - Accueil - Protection
4 réponses
La question c'est les récupérer mais où et pour en faire quoi ?
Avec sed, si tu utilises l'opérateur \( \) tu peux récupérer des morceaux qui matchent avec ton expression régulière et les réutiliser dans la chaîne de remplacement avec \1 et \2. Je ne pense pas que tu puisses aller beaucoup plus loin juste avec sed.
Si ça ne suffit pas à répondre à ton besoin, il faut utiliser un outil plus évolué. Le plus simple est peut-être d'utiliser un langage de script comme par exemple python :
https://stackoverflow.com/questions/3865896/translating-php-s-preg-match-all-to-python
Bonne chance
Avec sed, si tu utilises l'opérateur \( \) tu peux récupérer des morceaux qui matchent avec ton expression régulière et les réutiliser dans la chaîne de remplacement avec \1 et \2. Je ne pense pas que tu puisses aller beaucoup plus loin juste avec sed.
Si ça ne suffit pas à répondre à ton besoin, il faut utiliser un outil plus évolué. Le plus simple est peut-être d'utiliser un langage de script comme par exemple python :
https://stackoverflow.com/questions/3865896/translating-php-s-preg-match-all-to-python
Bonne chance
Je peux effectivement récupérer les variables avec les parenthèses capturantes, mais le problème est que je ne sais pas à l'avance combien d'éléments doivent matcher dans chacune de mes requêtes.
Je ne sais malheureusement pas programmer avec Python mais je vais tout de même jeter un oeil.
Merci
Je ne sais malheureusement pas programmer avec Python mais je vais tout de même jeter un oeil.
Merci
Salut,
Sans garantie vue que je n'ai qu'un maigre exemple pour tester ;-((
;-))
Sans garantie vue que je n'ai qu'un maigre exemple pour tester ;-((
$ cat plop $req = mysql_query('SELECT * FROM 'ma_table' WHERE pseudo="'.$pseudo.'" AND statut="'.$statut.'" '); $ cat script.sed s/\([^ ]*\)[^_]*_\(.*\)/\1 = $db->\2/ h s/[^.]*\.\([^.]*\)\.[^.]*/\1,/g s/\(.*\),/->execute(array(\1));/g x s/"[^"]*"/"?"/g G s/\([^ ]*\)\([^\n]*\)\n\(.*\)/\1\2\n\1\3/ $ sed -f script.sed plop $req = $db->query('SELECT * FROM 'ma_table' WHERE pseudo="?" AND statut="?" '); $req->execute(array($pseudo,$statut)); $
;-))
Salut,
Avec Perl :
Cela ne va modifier que les lignes dans lesquelles il y a "$req = mysql_query" avec ou sans espaces.
Dal
Avec Perl :
cat plop | perl -e 'while(<STDIN>){ my @matched = /\.(\$.+?)\./g; my $joined = join(",",@matched); if (/^.*\$req\s*=\s*mysql_query/){ $_ =~ s/'\.\$.+?\.'/?/g; $_ =~ s/(^.*\$req\s*=\s*mysql_query\s*)(\(.*\))\s*;/\$req = \$db->query$2; \$req->execute(array($joined));/;} print $_; }'
Cela ne va modifier que les lignes dans lesquelles il y a "$req = mysql_query" avec ou sans espaces.
Dal