J'ai vu cet exemple:
hello=ho02123ware38384you443d34o3434ingtod38384day
echo ${hello//[0-9]/}
Ce qui suit cette syntaxe: ${variable//pattern/replacement}
Malheureusement, le pattern
champ ne semble pas prendre en charge la syntaxe regex complète (si j'utilise .
ou \s
, par exemple, il essaie de faire correspondre les caractères littéraux).
Comment puis-je rechercher / remplacer une chaîne en utilisant la syntaxe regex complète?
\s
ne fait pas partie de la syntaxe d'expression régulière définie par POSIX (ni BRE ni ERE); c'est une extension PCRE, et la plupart du temps non disponible depuis le shell. [[:space:]]
est l'équivalent le plus universel.
\s
peut être remplacé par [[:space:]]
, au fait, .
par ?
, et les extensions extglob du langage de modèle de shell de base peuvent être utilisées pour des choses comme des sous-groupes facultatifs, des groupes répétés, etc.