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

**URL:** <https://www.debian-fr.org/t/vim-sed-automatiser-une-modification-de-la-premiere-ligne/87829>\
**Category:** Programmation\
**Tags:** vim\
**Created:** [Février 5, 2023, 6:35 UTC](https://www.debian-fr.org/t/vim-sed-automatiser-une-modification-de-la-premiere-ligne/87829 "2023-02-05T18:35:28Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Février 5, 2023, 6:35 UTC](https://www.debian-fr.org/t/vim-sed-automatiser-une-modification-de-la-premiere-ligne/87829/1 "2023-02-05T18:35:28Z")

</div>

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 ‹&nbsp;1p&nbsp;› mais je cale sur la suite!

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

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Février 7, 2023, 8:48 UTC](https://www.debian-fr.org/t/vim-sed-automatiser-une-modification-de-la-premiere-ligne/87829/2 "2023-02-07T08:48:07Z")

</div>

`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.
