[Bash] Ecrire au début d'un fichier

sergestage Messages postés 8 Statut Membre -  
zvib Messages postés 63 Statut Membre -
Bonjour,
j'aimerai grace a un script bash écrire au début d'un fichier plusieurs ligne de texte, sans effacer la suite du fichier bien sure.
Je n'arrive pas a trouver comment faire, si quelqu'un a une idée ?
Configuration: Linux
Opera 9.20

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    sed -i.bak '1i Le texte à insérer' fichier.txt
    Exemple :
    [jp@MDK tmpfs]$ cat fichier.txt
    Bonjour,
    j'aimerai grace a un script bash écrire au début d'un fichier plusieurs ligne de texte, sans effacer la suite du fichier bien sure.
    Je n'arrive pas a trouver comment faire, si quelqu'un a une idée ?
    
    [jp@MDK tmpfs]$ sed '1iBonjour à tous' fichier.txt
    Bonjour à tous
    Bonjour,
    j'aimerai grace a un script bash écrire au début d'un fichier plusieurs ligne de texte, sans effacer la suite du fichier bien sure.
    Je n'arrive pas a trouver comment faire, si quelqu'un a une idée ?
    
    [jp@MDK tmpfs]$
    Le "-i.bak" c'est pour créer un fichier de sauvegarde. Dans l'exemple je ne l'ai pas fait, uniquement pour produire la sortie sur l'écran ;-))
    3
    1. zvib Messages postés 63 Statut Membre 21
       
      Salut,
      je vais pas refaire un topic parce que mon problème est vraiment proche.
      Je veux écrire à la première ligne d'un fichier mais je veux écrire deux variables.
      J'essaye
      sed -i.bak '1i'$(echo $nbLines' '$nbWords)'' $fichier
      ou
      sed -i.bak '1i'$nbLines $nbWords'' $fichier
      mais rien ne marche. J'ai l'erreur:
      sed: impossible de lire 12: Aucun fichier ou répertoire de ce type
      12 étant le deuxième argument $nbWords.

      Merci d'avance
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > zvib Messages postés 63 Statut Membre
         
        Salut,
        jp@MDK:~/tmpfs ssh$ cat plop
        Salut,
        je vais pas refaire un topic parce que mon problème est vraiment proche.
        Je veux écrire à la première ligne d'un fichier mais je veux écrire deux variables.
        J'essaye
        blablabla
        ...
        ...
        blablabla
        
        
        jp@MDK:~/tmpfs ssh$ var1="Variable1"
        jp@MDK:~/tmpfs ssh$ var2="Variable2"
        jp@MDK:~/tmpfs ssh$ fichier="plop"
        
        jp@MDK:~/tmpfs ssh$ sed '1i\
        '"$var1 \n$var2"'
        ' < <(cat $fichier)
        Variable1
        Variable2
        Salut,
        je vais pas refaire un topic parce que mon problème est vraiment proche.
        Je veux écrire à la première ligne d'un fichier mais je veux écrire deux variables.
        J'essaye
        blablabla
        ...
        ...
        blablabla
        
        
        jp@MDK:~/tmpfs ssh$
        ;-))
        0
      2. zvib Messages postés 63 Statut Membre 21 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci pour faire exactement ce que je voulais, a savoir les 2 variables sur la première ligne et la réecriture dans le même fichier la commande est:
        sed -i '1i\
        '"$nbLines $nbWords"'
        ' $fichier


        Merci, bonne journée
        0
  2. sergestage Messages postés 8 Statut Membre
     
    Ah ouai pas bete, j'y avais pa pensé a cette solution. Mais en fait ma version de sed n'a pas la fonction -i ;-)
    Faut que je mette ca a jour merci
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      A ce moment là passe par un fichier temporaire :
      sed '1iTexte...' < fichier.txt > fich.tmp && mv -f fich.tmp fichier.txt; rm -f fich.tmp
      0
  3. sergestage Messages postés 8 Statut Membre
     
    Bon en fait j'ai un problème ....
    La Red Hat installé est tellement vieille qu'il n'y a pas de yum et les sources ne fonctionne pas ....
    Donc pour sed c'est mort lol
    Si quelqu'un a une autre idée sans utiliser le -i de sed ???
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Lis le post #3 ;-))
      0
      1. sergestage Messages postés 8 Statut Membre > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        mdr, dsl j'avais meme pas vu ....
        Oui mais en fait c justement pour éviter de passer par un fichier temporaire que je fait ca.
        Il doit surement avoir un moyen de le faire sans passer par sed avec un echo debut du fichier je sais pas ....
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ben non je crois pas... ou alors avec "perl" peut être...
        0