GNU/Linux >> Tutoriels Linux >  >> Linux

Comment insérer du texte avant la première ligne d'un fichier ?

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


Linux
  1. Comment analyser chaque ligne d'un fichier texte comme argument d'une commande ?

  2. Comment la commande Sed '1!g;h;$!d' inverse-t-elle le contenu d'un fichier ?

  3. Supprimez les cinq premiers caractères de n'importe quelle ligne d'un fichier texte sous Linux avec sed

  4. script bash ajoute du texte à la première ligne d'un fichier

  5. Comment extraire du texte d'un gros fichier, à partir de la première occurrence d'une chaîne ?

Apprendre à utiliser l'éditeur de texte Sed

Comment ajouter du texte au début du fichier sous Linux

Comment insérer un texte au début d'un fichier ?

sed à insérer lors de la première correspondance uniquement

Comment lire la dernière ligne d'un fichier texte dans une variable à l'aide de Bash ?

Comment insérer du texte à la 1ère ligne d'un fichier à l'aide de sed ?