OS X sed -E nie akceptuje rozszerzonych wyrażeń regularnych

Próbowałem różnych sposobów na zrobienie kilku podstawowych rzeczy z sed na OS X. Oto wyniki kilku prostych testów.

echo "foo bar 2011-03-17 17:31:47 foo bar" | sed 's/foo/FOUND/g'

zwroty (zgodnie z oczekiwaniami)

FOUND bar 2011-03-17 17:31:47 FOUND bar

ale

echo "foo bar 2011-03-17 17:31:47 foo bar" | sed -E 's/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/FOUND/g'

zwraca

foo bar 2011-03-17 17:31:47 foo bar

i (jeszcze bardziej irytująco)

echo "food bar 2011-03-17 17:31:47 food bar" | sed -E 's/\d/FOUND/g'

zwraca

fooFOUND bar 2011-03-17 17:31:47 fooFOUND bar

Terazman sed strony to mówią

The following options are available:

 -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.

iman re_format mówi

          \d  Matches a digit character.  This is equivalent to
          `[[:digit:]]'.

I rzeczywiście:

echo "foo bar 2011-03-17 17:31:47 foo bar" | sed -E 's/[[:digit:]]{4}/FOUND/g'

daje mi

foo bar FOUND-03-17 17:31:47 foo bar

... ale to jest denerwujące. Albo dlatego, że jestem gęsty, albo dlatego, że strony podręcznika sąokłamuje mnie (szczerze mówiąc, wolałbym to pierwsze).

Szybki przegląd literatury tutaj na temat SO sugeruje, że nie jestem w tym osamotniony i że wielu zaleca instalowanieGNU coreutils (lub rzeczywiście użyj czegoś innego - powiedzperl -pe) - jednak chciałbym być pewien:

Czy współpracują z EREsed ponieważ jest dołączony do OS X - jak sugerujeman strony - czy nie?

(Jestem na 10.8 i 10.6.8)

questionAnswers(2)

yourAnswerToTheQuestion