¿Qué significa el #
personaje en esta línea?
/bin/sed -e 's#abc#zzz#g'
¿Qué significa el #
personaje en esta línea?
/bin/sed -e 's#abc#zzz#g'
Respuestas:
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'
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 sed
expresió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
sbabeb
hace lo mismo que s/a/e/
.
/
se puede reemplazar por un carácter alternativo en contextos distintos dels
comando (sustituto), pero en ese caso se debe escapar la primera vez, por ejemplo,sed '/foo/d'
(eliminar la coincidencia de líneasfoo
) se convierte ensed '\#foo#d'