De recherche et de remplacement dans un bash en utilisant des expressions régulières

J'ai vu cet exemple:

hello=ho02123ware38384you443d34o3434ingtod38384day
echo ${hello//[0-9]/}

Qui suit la syntaxe suivante: ${variable//pattern/replacement}

Malheureusement, le pattern champ ne semble pas en charge l'intégralité de la regex de la syntaxe (si j'utilise . ou \s, par exemple, il essaie de faire correspondre les caractères).

Comment puis-je rechercher/remplacer une chaîne de caractères à l'aide de regex complète de la syntaxe?

  • Trouvé une question connexe ici: stackoverflow.com/questions/5658085/...
  • Pour info, \s ne fait pas partie de la norme POSIX définit la syntaxe d'expression régulière (ni BRE ou ERE); c'est une extension PCRE, et surtout pas disponibles à partir du shell. [[:space:]] est le plus universel équivalent.
  • \s peut être remplacé par [[:space:]], par la manière, . par ?, et extglob extensions de la ligne de base du shell modèle de langage peut être utilisé pour des choses comme option sous-groupes, groupes répétés, et la comme.
  • Une description de Bash modèles.
  • - Je l'utiliser dans bash version 4.1.11 sur Solaris... echo ${bonjour//[0-9]} Notez l'absence de la dernière barre oblique.
InformationsquelleAutor Lanaru | 2012-10-24