Existe-t-il un équivalent shell de preg_match de PHP? J'essaie d'extraire le nom de la base de données de cette chaîne dans un script shell. En utilisant preg_match en PHP, je pourrais juste faire quelque chose comme ça.Shell équivalent de php preg_match?
preg_match('define(\'DB_NAME\','(.*)'\'\)',$matches);
echo $matches[1];
Comment puis-je accomplir la même chose dans un script shell?
Merci pour la réponse rapide. Stackoverflow est incroyable. Une chance que vous seriez prêt à expliquer comment eval "result = ($ {t ## *,}" fonctionne? –
vous jouez avec le fait que le substition revient avec '); à la fin c'est sympa mais pas scalabale beaucoup (c'est-à-dire facile à modifier) mais sympa .... –
$ {t ## *,} supprime la chaîne de préfixe jusqu'à ",", voir sh (1) ou bash (1). Cela laisse 'somedb'); pour traiter, j'ai donc ajouté result = (en face d'un eval, qui s'est débarrassé des guillemets et a profité du fait que bash vous permet de faire des affectations avec = (...) CB est un peu juste, mais il a manqué la pire partie de cette expression: je pense que c'est un bashisme, et ne fonctionnerait pas dans un shell posix – DigitalRoss