Я видел этот пример:
hello=ho02123ware38384you443d34o3434ingtod38384day
echo ${hello//[0-9]/}
Который следует этому синтаксису: ${variable//pattern/replacement}
К сожалению, pattern
поле не поддерживает полный синтаксис регулярных выражений (если я использую .
или \s
, например, оно пытается соответствовать буквенным символам).
Как я могу найти / заменить строку, используя полный синтаксис регулярных выражений?
\s
не является частью стандартного синтаксиса регулярных выражений, определенного POSIX (ни BRE, ни ERE); это расширение PCRE, и в основном недоступно из оболочки. [[:space:]]
является более универсальным эквивалентом.
\s
может быть заменен [[:space:]]
, кстати, с .
помощью ?
и extglob расширения языка шаблонов базовой оболочки может использоваться для таких вещей , как дополнительные подгруппы, повторяющихся групп, и тому подобное.