Aller au contenu

Édition sur place

Édition sur place (en anglais in-place editing) : modification d'un fichier par un outil qui, par nature, lit un flux et en écrit un autre. sed -i (et de même perl -i ou gawk -i inplace) ne réécrit pas le fichier d'origine : il écrit le résultat dans un fichier temporaire créé dans le même répertoire, puis le renomme par-dessus l'original, ce qui rend le remplacement atomique.

Conséquences à connaître : le fichier obtenu est un nouvel inode, donc les liens physiques vers l'ancien ne voient pas la modification ; un lien symbolique est remplacé par un fichier ordinaire, sauf avec --follow-symlinks ; un processus qui avait ouvert l'ancien fichier continue de lire l'ancien contenu ; il faut le droit d'écrire dans le répertoire. La syntaxe diffère entre GNU (sed -i ou -i.bak) et BSD ou macOS (sed -i ''). Pour qu'une telle modification soit sûre à répéter, on l'écrit idempotente.

Dans les cours

Voir aussi