Przykłady te również pracować w bash bez potrzeby korzystania sed:
#!/bin/bash
MYVAR=ho02123ware38384you443d34o3434ingtod38384day
MYVAR=${MYVAR//[a-zA-Z]/X}
echo ${MYVAR//[0-9]/N}
można również użyć wspornik klasa znaków wyrażenia
#!/bin/bash
MYVAR=ho02123ware38384you443d34o3434ingtod38384day
MYVAR=${MYVAR//[[:alpha:]]/X}
echo ${MYVAR//[[:digit:]]/N}
wyjściowe
XXNNNNNXXXXNNNNNXXXNNNXNNXNNNNXXXXXXNNNNNXXX
Co @Lanaru chcieli wiedzieć Howe ver, jeśli dobrze rozumiem pytanie, to dlaczego "pełne" lub rozszerzenia PCRE \s\S\w\W\d\D
itp. nie działają jako obsługiwane w php ruby python itp. Te rozszerzenia są z zgodnych z Perl wyrażeń regularnych (PCRE) i mogą nie być kompatybilne z inne formy wyrażeń regularnych w powłoce.
te nie działają:
#!/bin/bash
hello=ho02123ware38384you443d34o3434ingtod38384day
echo ${hello//\d/}
#!/bin/bash
hello=ho02123ware38384you443d34o3434ingtod38384day
echo $hello | sed 's/\d//g'
wyjście ze wszystkich dosłownych znaków "d" usunięte
ho02123ware38384you44334o3434ingto38384ay
ale następujący działa zgodnie z oczekiwaniami
#!/bin/bash
hello=ho02123ware38384you443d34o3434ingtod38384day
echo $hello | perl -pe 's/\d//g'
wyjście
howareyoudoingtodday
nadzieja, że wyjaśnia rzeczy nieco więcej, ale jeśli nie są jeszcze mylić dlaczego nie spróbujesz to na Mac OS X, który ma REG_ENHANCED flagę włączona:
#!/bin/bash
MYVAR=ho02123ware38384you443d34o3434ingtod38384day;
echo $MYVAR | grep -o -E '\d'
Na większości smaków * nix będzie pan zobacz tylko następujące wyjście:
d
d
d
nJoy!
Znaleziono powiązane pytanie tutaj: http://stackoverflow.com/questions/5658085/bash-script-regular-expressions-how-to-find-and-replace-all-matches – jheddings
FYI, '\ s' nie jest częścią standardowej składni wyrażeń regularnych POSIX (ani BRE, ani ERE); jest to rozszerzenie PCRE, a najczęściej niedostępne z powłoki. '[[: space:]]' jest bardziej uniwersalnym odpowiednikiem. –
'\ s' może być zastąpione przez' [[: spacja:]] ', nawiasem mówiąc,' .' przez '?', A rozszerzenie rozszerzenia do podstawowego języka wzorca powłoki może być używane do takich rzeczy jak opcjonalne podgrupy, powtarzane grupy i tym podobne. –