Estou aprendendo sed. Tudo parecia estar indo bem até eu encontrar o N (várias linhas a seguir). Eu criei este arquivo (guide.txt) para fins de prática / compreensão / contexto. Aqui está o conteúdo do referido arquivo ...
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
Portanto, meu objetivo é substituir TODAS as instâncias do "Administrador de Rede" por "Usuário do Sistema". Como a primeira instância do "Administrador de rede" é separada por uma nova linha (\ n), preciso do próximo operador de várias linhas (N) para acrescentar a linha que começa com "Administrador" e a linha anterior que termina com "Rede \ n" . Sem problemas. Mas também quero capturar todas as outras instâncias de linha única "Administrador de rede".
Com minha pesquisa, aprendi que precisarei de dois comandos de substituição; um para a sequência separada por nova linha e um para os outros. Além disso, há alguma ação acontecendo por causa da última linha que contém a correspondência de substituição e a linha múltipla a seguir. Então eu faço isso ...
$ sed '
> s/Network Administrator/System User/
> N
> s/Network\nAdministrator/System\nUser/
> ' guide.txt
Isso retorna esses 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
Eu pensei que a substituição de linha única pegaria todas as instâncias "normais" de "Administrador de Rede" e a trocaria por "Usuário do sistema", enquanto a instrução de várias linhas funcionaria sua mágica na instância separada de nova linha, mas como você posso vê-lo retornado, o que considero, resultados inesperados.
Depois de algumas brincadeiras, eu cheguei aqui ...
$ sed '
> s/Network Administrator/System User/
> N
> s/Network\nAdministrator/System\nUser/
> s/Network Administrator/System User/
> ' guide.txt
E voilà, eu recebo a saída desejada 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 que isso funciona e o script sed original não? Eu realmente quero entender isso.
Agradecemos antecipadamente por qualquer ajuda.