Eu já vi este exemplo:
hello=ho02123ware38384you443d34o3434ingtod38384day
echo ${hello//[0-9]/}
O que segue esta sintaxe: ${variable//pattern/replacement}
Infelizmente, o pattern
campo parece não suportar sintaxe de regex completa (se eu usar .
ou \s
, por exemplo, tentar corresponder aos caracteres literais).
Como posso procurar / substituir uma string usando a sintaxe regex completa?
\s
não faz parte da sintaxe de expressão regular definida pelo POSIX (nem BRE nem ERE); é uma extensão PCRE e, principalmente, não está disponível no shell. [[:space:]]
é o equivalente mais universal.
\s
podem ser substituídos por [[:space:]]
, a propósito, .
por ?
, e extensões extglob para a linguagem de padrão de linha de base da linha de base podem ser usadas para itens como subgrupos opcionais, grupos repetidos e similares.