Estoy aprendiendo sed. Todo parecía ir bien hasta que me encontré con la N (varias líneas a continuación). Creé este archivo (guide.txt) para fines de práctica / comprensión / contexto. Aquí está el contenido de dicho archivo ...
This guide is meant to walk you through a day as a Network
Administrator. By the end, hopefully you will be better
equipped to perform your duties as a Network Administrator
and maybe even enjoy being a Network Administrator that much more.
Network Administrator
Network Administrator
I'm a Network Administrator
Por lo tanto, mi objetivo es sustituir TODAS las instancias de "Administrador de red" con "Usuario del sistema". Debido a que la primera instancia de "Administrador de red" está separada por una nueva línea (\ n), necesito el siguiente operador de varias líneas (N) para agregar la línea que comienza con "Administrador" con la línea anterior que termina con "Red \ n" . No hay problema. Pero también quiero capturar todas las demás instancias de una sola línea de "Administrador de red".
De mi investigación, aprendí que necesitaré dos comandos de sustitución; uno para la cadena separada de nueva línea y uno para los demás. Además, hay algunos cambios debido a la última línea que contiene la coincidencia de sustitución y la línea múltiple siguiente. Así que creo esto ...
$ sed '
> s/Network Administrator/System User/
> N
> s/Network\nAdministrator/System\nUser/
> ' guide.txt
Esto devuelve estos resultados ...
This guide is meant to walk you through a day as a System
User. By the end, hopefully you will be better
equipped to perform your duties as a System User
and maybe even enjoy being a Network Administrator that much more.
System User
Network Administrator
I'm a System User
Pensé que la sustitución de una sola línea capturaría todas las instancias "normales" de "Administrador de red" y lo cambiaría por "Usuario del sistema", mientras que la instrucción de varias líneas funcionaría su magia en la instancia separada de nueva línea, pero como usted Puedo verlo devuelto, lo que considero, resultados inesperados.
Después de un poco de violín, aterricé en esto ...
$ sed '
> s/Network Administrator/System User/
> N
> s/Network\nAdministrator/System\nUser/
> s/Network Administrator/System User/
> ' guide.txt
Y voilà, obtengo la salida deseada de ...
This guide is meant to walk you through a day as a System
User. By the end, hopefully you will be better
equipped to perform your duties as a System User
and maybe even enjoy being a System User that much more.
System User
System User
I'm a System User
¿Por qué funciona esto y el script sed original no? Realmente quiero entender esto.
Gracias de antemano por cualquier ayuda.