2012-09-16 25 views
6

¿Alguien sabe cuál es la lista completa de caracteres especiales en sed?caracteres especiales en sed

Por favor, no responda como, es la misma lista de caracteres especiales para grep, porque eso solo transforma mi pregunta en: ¿Alguien sabe cuál es la lista completa de los caracteres especiales en grep?

+0

La documentación para sed (y grep) es lo que estás buscando. ¿Qué no encontraste allí? – Mat

+0

Acabo de ver ejemplos de qué son los caracteres especiales, pero nunca estoy seguro de que sea la _completa_ lista de caracteres especiales – mnr

+2

No estoy seguro de lo que quiere decir con "carácter especial", pero la documentación enumera todo lo que puede hacer. No tiene sentido replicar esa documentación aquí. – Mat

Respuesta

3

Creo que esta es la lista completa de los caracteres [\^$. |? * +() En los que sed responderá de una manera diferente a un personaje normal.

+2

También depende del dialecto. En Linux 'sed', los caracteres'() | +? 'No son especiales por sí mismos, solo si van precedidos de una barra invertida. – tripleee

+1

También dentro de una clase de caracteres '^ -]' (pero no otros) son especiales. Es un mini-lenguaje por separado, realmente. – tripleee

+1

Dentro de una clase de caracteres en [POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html), también puede escribir expresiones sensibles a la configuración regional como '[[: alpha:]]' o '[[: puntual:] [: dígito:]]', entonces ':' también tiene un significado especial, y es (aún otro) mini-lenguaje. La URL enumera el comportamiento de BRE (expresión regular básica) POSIX estándar y ERE (expresión regular extendida). La descripción POSIX de ['sed'] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html) profundiza sobre eso. Para cualquier sistema específico, mira la página del manual local. –

5

Depende. Estrictamente hablando, un estándar compatible con sed sólo se debe utilizar expresiones regulares básicas de las que the standard estados:

Los caracteres especiales BRE y los contextos en los que tienen su significado especial son los siguientes:

.[\ El período, izquierda el corchete cuadrado y la barra inclinada invertida deben ser especiales, excepto cuando se usan en una expresión de corchete (ver Expresión de corchete RE). Una expresión que contiene un '[' que no está precedida por una barra diagonal inversa y no es parte de una expresión de paréntesis produce resultados indefinidos. El asterisco debe ser especial excepto cuando se utiliza en una expresión de corchetes, como el primer carácter de un BRE completo (después de un '^' inicial, si lo hubiera), o como el primer carácter de una subexpresión (después de una inicial). '^', si hay alguno); ver BREs hacer coincidir múltiples caracteres

^ La circunfleja será especial si se utiliza como un ancla (ver la expresión de anclaje BRE) o como el primer carácter de una expresión entre corchetes (ver RS ​​expresión de corchetes)

$ El dolar el letrero será especial cuando se use como ancla.

Así que la lista completa es .[\*^$, pero el contexto es importante. Además, muchos sed proporcionan opciones para usar expresiones regulares extendidas (ERE), que ampliarán la lista y cambiarán el contexto en el que los caracteres son especiales. Por ejemplo, sin ERE, las agrupaciones se forman usando \( y \), pero con los ERE ( y ) por sí mismos son especiales y se deben escapar para que coincidan literalmente.