2011-05-03 20 views
28

Estoy escribiendo un script de shell para crear algunos archivos de configuración.Use barras inclinadas en sed replace

También tengo que reemplazar algunos patrones en los archivos y un patrón debe ser reemplazado por una ruta.

Así que mi pregunta es: ¿hay alguna manera de reemplazar mi webpath de marcador de posición por una ruta sin establecer barras diagonales inversas delante de las barras diagonales?

¿Quizás hay otra herramienta disponible para hacer esto?

Respuesta

46

Se puede usar un delimitador de expresiones regulares alternativa como un patrón de búsqueda por backslashing que:

sed '\,some/path,d' 

Y sólo lo utilizan como está para el comando s:

sed 's,some/path,other/path,' 

Es posible que desee proteger a otra metacaracteres, sin embargo; este es un buen lugar para usar Perl y quotemeta, o equivalentes en otros lenguajes de scripting.

De man sed:

/regexp/
líneas de partido que coincidan con la expresión regular regexp.

\cregexpc
líneas de partido que coincidan con la expresión regular regexp. El c puede ser cualquier carácter que no sea barra diagonal inversa o nueva línea.

s/regular expression/replacement/flags
Sustituya la cadena de reemplazo por la primera instancia de la expresión regular en el espacio del patrón. Cualquier carácter que no sea barra diagonal inversa o línea nueva se puede utilizar en lugar de una barra inclinada para delimitar el RE y el reemplazo. Dentro del RE y el reemplazo, el propio delimitador de RE puede usarse como un carácter literal si está precedido por una barra diagonal inversa.