VIM / SED Automatiser une modification de la première ligne

Tags: #<Tag:0x00007f63f5063c58>

Bonjour

La commande :helptags de vim cale et renvoie une erreur à cause d’un caractère accentué dans la première ligne du fichier d’aide (fichier txt UTF8).
Ce caractère est toujours sur le même mot « Dernière…»
comme
Dernière modification : 17 mar 2003

Pour régler ce problème, j’ai donc créé la commande suivante pour reporter « Dernière » (et tout ce qui suit) 2 lignes plus bas.

:s/Dernière/^M^MDernière/

avec une boucle ouvrant tous les fichiers sous vim, il suffit de lancer cette commande par un simple appel à cette commande à chaque ouverture du fichier par vim. C’est donc très besogneux!

Les commandes vim « : » sont très semblables à celles de SED.

Comment demander à SED d’appliquer cette commande uniquement sur la première ligne de chaque fichier?

Je crois avoir trouvé sed -n ‹ 1p › mais je cale sur la suite!

Un lien en français pour débuter en SED ferait l’affaire.

for i in *.txt ; do echo "$i" ; sed -zi '1 {s/Dernière/\n\nDernière/}' "$i" ; done

Commentaires de débutant:
Sans oublier l’option -i, sans laquelle le fichier n’est pas modifié,
l’option -z permet d’interpréter correctement la fin de ligne avec \n, alors que l’écriture ^M était copiée textuellement.
Il fallait aussi encadrer la commande par des accolades.