2013-02-03 23 views

Odpowiedz

21

\ d jest przełącznikiem, a nie makrem wyrażenia regularnego. Jeśli chcesz korzystać z niektórych predefiniowanego „stałą” istead [0-9] wypowiedzi po prostu spróbować uruchomić ten kod

s/[[:digit:]]+//g 
+5

ale dlaczego "\ w" działa – user2036880

+4

Tak jak napisano, jest to dokumentacja sed "\ w Pasuje do dowolnego znaku" słownego "Znak" słowny "to dowolna litera lub cyfra lub znak podkreślenia." I kolejna interesująca linia "Ponadto ta wersja sed obsługuje kilka znaków escape (z których niektóre są wieloznakowe) do wstawiania niedrukowalnych znaków w skrypty (\ a, \ c, \ d, \ o , \ r, \ t, \ v, \ x). Mogą one powodować podobne problemy ze skryptami napisanymi dla innych sedów. " Aby uzyskać więcej informacji na http://www.gnu.org/software/sed/manual/sed.html – Kamil

+0

@ user2036880, jak wskazuję w drugiej części mojej odpowiedzi '\ d' ma inne znaczenie w sed. –

13

Nie ma takiego specjalna grupa znaków w sed. Będziesz musiał użyć [0-9].

W GNU sed, \d wprowadza dziesiętny kod znaków od jednej do trzech cyfr w zakresie 0-255. Jak wskazano in this comment.

-1

Lepiej użyć Rozszerzone wzór w sed dodając -E. W podstawowej funkcji RegExp, \ d i niektóre inne nie zostaną wykryte. -E Interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's). The re_format(7) manual page fully describes both formats.

+1

'\ d' nie zostanie wykryty z opcją -E. –

Powiązane problemy