IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Insérer une ligne au début d'un fichier


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    DBA Oracle / MySQL / SQLServer
    Inscrit en
    Janvier 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : DBA Oracle / MySQL / SQLServer

    Informations forums :
    Inscription : Janvier 2005
    Messages : 95
    Points : 54
    Points
    54
    Par défaut Insérer une ligne au début d'un fichier
    Bonjour,

    Je cherche à insérer un ligne dans un fichier mais au début, car :

    echo "test" >> ~/fichier.txt
    insère la ligne en fin de fichier.

    D'avance merci pour votre aide.

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Il y a pas mal de solutions avec sed, awk ou perl, mais j'aime bien celle-la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cat - toto.txt > newfile.txt << EOF
    Ma ligne.
    EOF
    Ajoute "Ma ligne." comme premiere ligne de newfile.txt, puis insere toto.txt a la suite. Evidemment, si tu as plusieurs lignes a ajouter, il suffit de les mettre avant le EOF.

  3. #3
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Oui, c'est une solution utile à connaitre, mais s'il souhaite modifier le fichier, ce n'est pas pratique.

    En Sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed -i '1i\
    test' ~/fichier.txt
    L'option -i de Sed permet de modifier le fichier, mais elle n'est pas dispo sur certains Sed (mais celui de Gnu l'a).

  4. #4
    Membre du Club
    Profil pro
    DBA Oracle / MySQL / SQLServer
    Inscrit en
    Janvier 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : DBA Oracle / MySQL / SQLServer

    Informations forums :
    Inscription : Janvier 2005
    Messages : 95
    Points : 54
    Points
    54
    Par défaut
    merci pour vos réponses

    sed correspond plus à ce que je veux faire, par contre je n'arrive pas insérer le contenu d'une variable :

    sed -i '1i\
    $MA_VARIABLE' ~/fichier.txt

  5. #5
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    C'est un problème de Shell et de quoting...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed -i "1i\\
    $MA_VARIABLE" ~/fichier.txt

  6. #6
    Membre du Club
    Profil pro
    DBA Oracle / MySQL / SQLServer
    Inscrit en
    Janvier 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : DBA Oracle / MySQL / SQLServer

    Informations forums :
    Inscription : Janvier 2005
    Messages : 95
    Points : 54
    Points
    54
    Par défaut
    merci mais ça ne marche pas...

  7. #7
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Et donner des détails te ferait mal aux doigts ?

    Chez moi, ça marche.


    Bon... que contient ta variable ? Elle est sur plusieurs lignes ?
    Si oui, il faut ajouter un \ à la fin de chaque ligne intermédiaire.

  8. #8
    Membre du Club
    Profil pro
    DBA Oracle / MySQL / SQLServer
    Inscrit en
    Janvier 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : DBA Oracle / MySQL / SQLServer

    Informations forums :
    Inscription : Janvier 2005
    Messages : 95
    Points : 54
    Points
    54
    Par défaut
    excuses moi !!

    TEXT="BOOT le `date '+%d %B %Y'` à `date '+%H h %M'`"
    sed -i "1i\\
    $TEXT" /home/franck/logs/boot.log
    résultat rien dans le fichier boot.log

  9. #9
    Membre du Club
    Profil pro
    DBA Oracle / MySQL / SQLServer
    Inscrit en
    Janvier 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : DBA Oracle / MySQL / SQLServer

    Informations forums :
    Inscription : Janvier 2005
    Messages : 95
    Points : 54
    Points
    54
    Par défaut
    h si ça marche !!!

    excuses moi !!

    merci encore

  10. #10
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Ah !
    T'es tombé sur le seul cas particulier qui marche pas. Mon code marche seulement si le fichier n'est pas vide.

    J'avoue ne pas comprendre : pourquoi veux-tu écrire tes logs "à l'envers" ? C'est beaucoup plus pratique à mon avis de les écrire dans l'ordre chronologique (et d'utiliser la commande tail pour voir les derniers).

    Edit : ok, tant mieux. Je suppose que tu as eu le problème que je viens de citer.

  11. #11
    Membre du Club
    Profil pro
    DBA Oracle / MySQL / SQLServer
    Inscrit en
    Janvier 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : DBA Oracle / MySQL / SQLServer

    Informations forums :
    Inscription : Janvier 2005
    Messages : 95
    Points : 54
    Points
    54
    Par défaut
    ben en fait oui le fichier était bien vide !

    je veux les écrire à l'envert car je les regarde à travers un navigateur...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insérer une ligne avec la date au début d'un fichier
    Par bel09 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/12/2013, 16h50
  2. sed et ajout d'une ligne au début d'un fichier en fonction d'une condition
    Par sheepolata dans le forum Administration système
    Réponses: 2
    Dernier message: 14/10/2010, 11h23
  3. Réponses: 2
    Dernier message: 21/10/2008, 10h46
  4. [Tableaux] Insérer une ligne au début d'un tableau
    Par WagaSeb dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2007, 12h13
  5. [VBA] insérer une ligne dans un fichier excel
    Par cokinoumasterflash dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2005, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo