J'ai un doosey ici. Je suis nouveau à Linux shell si nue avec moi ...Linux SED recherche remplacer multiple par ligne
J'ai besoin de remplacer tout un tas de super globales PHP dans un site Web clients avec une fonction PHP que j'ai faite pour nettoyer les superglobales des attaques xss.
Voici ce que le code d'origine pourrait ressembler à:
echo $_REQUEST['HELLO1'] . ' AND ' . $_REQUEST['HELLO2'];
j'ai besoin de ressembler à ceci:
echo MYCLASS::myfunction($_REQUEST['HELLO1']) . ' AND ' . MYCLASS::myfunction($_REQUEST['HELLO2']);
La question principale, je dois faire une recherche/remplacement sur plus 100 fichiers! Yikes!
Donc ma solution était ce (en shell linux):
sudo sed -i 's/\$_REQUEST[.*\]/MYCLASS::myfunction(&)/g' *.php
Cela fonctionne très bien que longue, comme une seule instance de « $ _REQUEST » se produit par ligne ... Cependant, avec plusieurs instances, il visser et fait ceci:
echo MYCLASS::myfunction($_REQUEST['HELLO1'] . ' AND ' . $_REQUEST['HELLO2']);
Je tire maintenant mes cheveux!
Est-ce que je peux espérer trouver des experts en shell Linux?
c'était beaucoup plus rapide que le script Perl .. merci! –
Vous êtes les bienvenus, je vous ai fourni un perl 1 doublure ainsi en réponse ci-dessus pour faire la même chose. – anubhava
J'ai un problème cependant .. Il remplace $ _REQUEST [''] WITH $ _REQUEST ('') aucune idée de comment réparer? –