¿Qué significa el carácter # en: / bin / sed -e 's # abc # zzz # g'?


Respuestas:


14

Es un separador, al igual "/"que es igual que 's/abc/zzz/g'.

significa buscar "abc", reemplazarlo con "zzz", con una marca global, significa hacerlo para todos los "abc" de la línea, no solo el primero.

También puede usar un separador alternativo para una dirección de patrón, pero en ese caso, debe escapar para que se interprete correctamente:

sed -r '\#abc#p'

24

Es un delimitador o separador. El más utilizado es el /de

sed 's/old/new/' file

Pero sed tomará el primer carácter después del comando (s) como delimitador. Puedes usar cualquier personaje conveniente, por ejemplo ...

sed 's%old%new%' file

Esto es muy útil si el archivo contiene /(u otros caracteres de delimitación convencionales). Puedes elegir como separador algún personaje que sabes que no necesitarás poner en tu sedexpresión, ahorrándote un escape molesto.

Digamos que quieres reemplazar

/ubuntu//questions

con

/ubuntu//posts

Podrías usar

sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file

Pero mejor usar

sed 's|/ubuntu//questions|/ubuntu//posts|' file

Vale la pena señalar que, al menos en GNU sed, /se puede reemplazar por un carácter alternativo en contextos distintos del scomando (sustituto), pero en ese caso se debe escapar la primera vez, por ejemplo, sed '/foo/d'(eliminar la coincidencia de líneas foo) se convierte ensed '\#foo#d'
steeldriver

@steeldriver de hecho! - Vi que Ravexina agregó eso a su respuesta, así que quizás deje la mía :)
Zanna

1
No es importante si la secuencia contiene el carácter separador. Lo importante es si la cadena de búsqueda o la cadena de reemplazo contienen el carácter separador.
kasperd

@kasperd oh si, cierto. Edité un poco :)
Zanna

La respuesta de @ Zanna es más precisa: el primer carácter después del comando "s" determina el separador que se utiliza en este comando. Podrías usar cualquier personaje aquí. sbabebhace lo mismo que s/a/e/.
rexkogitans
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.