¿Cómo get + metacarácter para sed en la Terminal?

Parece que sed que viene con Mac OS 1.7.4 es el original, sin el metacarácter + . ¿Puedo get la funcionalidad + metacharacter?

  • Después de la installation de Lion, Safari ocasionalmente no responde, no tomará input
  • Los ventiladores Air 11 "i7 2011 se encienden, nunca se apagan
  • No puedo hacer que gcc compile la biblioteca DevIL
  • ¿Cómo habilito el control de volumen fino a través de un atajo de keyboard en Lion?
  • ¿Cómo puedo evitar que la tecla F8 haga aparecer el Control de Misión?
  • ¿Cómo puedo manejar los documentos de ClarisWorks en Lion?
  • Instalé un SSD nuevo, pero no tengo un disco Snow Leopard. ¿Puedo instalar Lion desde Internet?
  • Tiene que volver a conectarse a WiFi cada vez que la computadora se va a dormir
  • Lion cambia el comportamiento del sueño al cerrar la tapa de una MacBook
  • TextEdit: ¿Cómo detener el cursor siempre en la parte inferior de la pantalla mientras se escribe?
  • ¿Evita que las windows de Xcode salgan de pantalla completa después de despertar del modo de suspensión?
  • ¿Cómo arreglar Lion Mail.app que sigue pidiendo la contraseña de llavero?
  • 2 Solutions collect form web for “¿Cómo get + metacarácter para sed en la Terminal?”

    El + es una extensión GNU de sed que coincide con una o más de las expresiones anteriores, pero la versión en OS X es BSD sed . Una versión de GNU sed ha sido portada a OS X en MacPorts . De lo contrario, deberá intentar una solución alternativa.

    Por ejemplo, para hacer coincidir uno o más dígitos, puede usar [0-9][0-9]* lugar de [0-9]+

    La implementación de sed OS de OS X utiliza el formatting de expresión regular "básico" de forma pnetworkingeterminada, que no admite + . Del man re_format :

     Obsolete (``basic'') regular expressions differ in several respects. `|' is an ordinary character and there is no equivalent for its functional- ity. `+' and `?' are ordinary characters, and their functionality can be expressed using bounds (`{1,}' or `{0,1}' respectively). Also note that `x+' in modern REs is equivalent to `xx*'. The delimiters for bounds are `\{' and `\}', with `{' and `}' by themselves ordinary characters. The parentheses for nested subexpressions are `\(' and `\)', with `(' and `)' by themselves ordinary characters. [...] 

    ¿Entonces que puedes hacer? Bueno, una posibilidad es decirle a sed que use el formatting moderno con el interruptor -E . Sin embargo, esto puede forzarlo a volver a escribir otras partes de su RE para cumplir (por ejemplo, intercambiando \( ... \) con ( ... ) ). Otra opción es usar una de las forms alternativas sugeridas arriba. Aquí hay ejemplos que usan los diferentes enfoques para hacer coincidir "A" seguido de uno o más "B" o "C", seguidos por "D":

     sed -E 's/A[BC]+D/[match]/' sed 's/A[BC]\{1,\}D/[match]/' sed 's/A[BC][BC]*D/[match]/' 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).