Widziałem ten przykład:
hello=ho02123ware38384you443d34o3434ingtod38384day
echo ${hello//[0-9]/}
Co jest zgodne z następującą składnią: ${variable//pattern/replacement}
Niestety pattern
wydaje się, że pole nie obsługuje pełnej składni wyrażenia regularnego (jeśli używam .
lub \s
, na przykład, próbuje dopasować znaki literału).
Jak mogę wyszukać / zamienić ciąg przy użyciu pełnej składni wyrażeń regularnych?
\s
nie jest częścią standardowej składni wyrażeń regularnych zdefiniowanej w POSIX (ani BRE ani ERE); jest to rozszerzenie PCRE i przeważnie niedostępne z powłoki. [[:space:]]
jest bardziej uniwersalnym odpowiednikiem.
\s
można zastąpić [[:space:]]
, nawiasem mówiąc, .
przez ?
, a rozszerzenia extglob do bazowego języka wzorców powłoki mogą być używane do takich rzeczy, jak opcjonalne podgrupy, grupy powtarzane i tym podobne.