J'ai regardé autour de sed
commande pour ajouter du texte dans un fichier sur une ligne spécifique.
Cela fonctionne en ajoutant du texte après la ligne 1 :
sed '1 a
Mais je veux l'ajouter avant ligne 1. Ce serait :
sed '0 a
mais j'obtiens cette erreur :invalid usage of line address 0
.
Une suggestion ?
Réponse acceptée :
Utilisez sed
insérer (i
) option qui insérera le texte dans la ligne précédente.
sed '1 i
Mise à jour de l'auteur de la question :
Pour le faire éditer le fichier en place – avec GNU sed
– J'ai dû ajouter le -i
choix :
sed -i '1 ianything' file
Aussi la syntaxe
sed -i '1i text' filename
Pour les sed non GNU
Vous devez appuyer sur la touche de retour immédiatement après la barre oblique inverse 1i
et après first_line_text
:
sed -i '1i
first_line_text
'
Notez également que certains non-GNU sed
implémentations (par exemple celle sur macOS) nécessitent un argument pour le -i
drapeau (utilisez -i ''
pour obtenir le même effet qu'avec GNU sed
).
Pour sed
implémentations qui ne prennent pas en charge -i
du tout, exécutez sans cette option mais redirigez la sortie vers un nouveau fichier. Remplacez ensuite l'ancien fichier par le fichier nouvellement créé.