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