Je cherche un moyen d'ajouter de la chaîne au début de chaque ligne (même chaîne pour chaque ligne). Pas quelque chose de personnalisable mais plutôt quelque chose qui sera facile à retenir et disponible sur chaque plate-forme compatible POSIX (et chaque shell également).
la source
-i
commutateur n'édite pas le fichier en place. Il crée un nouveau fichier et écrase l'original une fois terminé (preuve: l'inode change). Il n'y a pas beaucoup d'outils qui effectuent réellement l'édition sur place, ce qui est une opération dangereuse. De plus, puisque vous mentionnez POSIX, le-i
commutateur n'est pas obligatoire pour un compatible POSIXsed
, c'est une caractéristique de certaines implémentations particulières.sed -i
n'est pas POSIX. C'est GNU. FreeBSDsed
a une option similaire, mais vous en avez besoinsed -i ''
.-i
crée une copie temporaire (c'est pourquoi j'ai dit que les changements sont reflétés dans le fichier d'origine); Je voulais dire que vous obtenez la même sémantique que la substitution sur place. Veuillez vérifier que la réponse mise à jour est conforme à POSIX.$$
(l'ID de processus du shell actuel) dans le cadre d'un nom de fichier temporaire; cela évite l'effort de penser à un nom unique garanti à chaque fois:command filename > filename.$$ && mv filename.$$ filename