J'apprends sed. Tout semblait bien se passer jusqu'à ce que je tombe sur le N (multiligne ensuite). J'ai créé ce fichier (guide.txt) à des fins de pratique / compréhension / contexte. Voici le contenu dudit fichier ...
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
Mon objectif est donc de remplacer TOUTES les instances de "Network Administrator" par "System User". Parce que la première instance de "Administrateur réseau" est séparée par une nouvelle ligne (\ n), j'ai besoin de l'opérateur suivant multiligne (N) pour ajouter la ligne qui commence par "Administrateur" avec la ligne précédente se terminant par "Réseau \ n" . Aucun problème. Mais je veux également attraper toutes les autres instances monolignes "Administrateur réseau".
De mes recherches, j'ai appris que j'aurais besoin de deux commandes de substitution; un pour la chaîne séparée par la nouvelle ligne et un pour les autres. De plus, il y a du jive à cause de la dernière ligne contenant la correspondance de substitution et la multi-ligne suivante. Alors je crée ça ...
$ sed '
> s/Network Administrator/System User/
> N
> s/Network\nAdministrator/System\nUser/
> ' guide.txt
Cela renvoie ces résultats ...
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
Je pensais que la substitution sur une seule ligne intercepterait toutes les instances "normales" de "Administrateur réseau" et la remplacerait par "Utilisateur système", tandis que l'instruction multiligne fonctionnerait comme par magie sur l'instance séparée par une nouvelle ligne, mais comme vous peut le voir retourné, ce que je considère, des résultats inattendus.
Après quelques tripotages, j'ai atterri là-dessus ...
$ sed '
> s/Network Administrator/System User/
> N
> s/Network\nAdministrator/System\nUser/
> s/Network Administrator/System User/
> ' guide.txt
Et voilà, j'obtiens la sortie souhaitée 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
Pourquoi cela fonctionne-t-il et le script sed original ne fonctionne pas? Je veux vraiment comprendre ça.
Merci d'avance pour votre aide.