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 :

aide commande sed


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Points : 41
    Points
    41
    Par défaut aide commande sed
    bonjour,
    Je souhaites réaliser une commande qui me permettra d'écrire une ligne dans un fichier avec une variable à l'aide de sed.

    J'ai parcourut pas mal de site qui m'ont un peu aidé mais le problème est que je n'obtiens toujours pas le résultat souhaité.

    Je voudrais avoir pour résultat que la ligne suivante s'inscrive dans un fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <string>23/04/2012</string>
    Pour ce faire j'ai écrit la commande suivante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var=heure; echo "<string>`date +%D`</string>" |sed -i '2i\'"$var"'\' test.txt
    Seulement cette commande me retourne juste le mot "heure".

    Auriez vous une idée ?
    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ var=heure ; echo "<string>`date +%D`</string>" | sed 'i\     
    > '$var > fichier
    $ cat fichier
    heure<string>04/23/12</string>
    $
    C'est ton insert le problème
    il faut pas de caractères après le i\
    donc tu peux te la jouer one-liner

  3. #3
    Membre du Club
    Profil pro
    étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Points : 41
    Points
    41
    Par défaut
    Merci beaucoup frp31.
    Autre petite question tu sais comment je peux faire pour faire passer la commande a la ligne suivante?
    par exemple afficher cette ligne après la ligne 2 histoire que ca suive un ordre logique sur mon tableau.

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    pareil mais avec append au lieu d'insert et bien sur tu dois ajouter la ligne vide qui sera interprétée comme telle.

  5. #5
    Membre du Club
    Profil pro
    étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Points : 41
    Points
    41
    Par défaut
    Merci pour ces reponses.
    Cependant un autre soucis est survenue.je dois répeter le script plusieurs fois sur le même fichier a des lignes différentes. ce qui fait que tout est décalé et du coup ca me fait un joli carnage dans mon fichier.

    Du coup je pensais mettre des commentaires dans le fichier ou je souhaite écrire ces lignes et demander à sed d'écrire avant la ligne qui contien la chaine de caractère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <-- charge de l'ordinateur -->
    De facon a obtenir ce résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <number tooltip='1'>1</number>
    <-- charge de l'ordinateur -->
    Je ne sais pas si c'est possible je n'arrive pas a trouver la solution :/

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [fp@ln ~] echo toto > t
    [fp@ln ~] cat t
    toto
    [fp@ln ~] sed "/toto/ i\
    > tutu
    >
    > " t
    tutu
    toto
    [fp@in ~] rm t
    rm: détruire fichier régulier `t'? y
    [fp@ln ~]
    la recherche se fait sur le /.../ et ensuite commande à appliquer

  7. #7
    Membre du Club
    Profil pro
    étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Points : 41
    Points
    41
    Par défaut
    la je suis un peu largué...

    En fait j'ai ma commande qui me permet de recuperer la charge d'un ordinateur pour la mettre ensuite sur mon fichier xml (en fait je fais un graphique qui reprensente la charge de toutes les machines).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '27i\'"<number tooltip='`qhost |grep blackwater |awk '{print$4}'`'>`qhost |grep blackwater |awk '{print$4}'`</number>"'\' graph.xml
    Donc la commande met le résultat a la ligne 27.
    seulement j'ai un autre script qui met la charge d'une autre machine a la ligne 32 par exemple.

    Le soucis c'est que tout se décale d'ou le fait de savoir si je peux dire a sed de mettre ces résultats avant une chaine de caractère.

    Et je compte faire passer ca par un crontab donc je dois faire le one liner .

    Sinon ton code j'ai pas trop compris comment l'utiliser.
    Désolé j'en demande peut etre un peu trop

  8. #8
    Membre du Club
    Profil pro
    étudiant
    Inscrit en
    Avril 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 44
    Points : 41
    Points
    41
    Par défaut
    J'ai trouvé la solution.

    il suffit de mettre des slash avant le "i" tout simplement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/<!-- babsie -->/i\'"<number tooltip='`qhost |grep babsie |awk '{print$4}'`'>`qhost |grep babsie |awk '{print$4}'`</number>"'\' graph.xml
    Je n'ai pas besoin de préciser la ligne. il va mettre le résultat de la commande juste avant la chaine
    Merci beaucoup frp31 grâce a toi j'ai bien avancé sur mon projet il est presque terminé.

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

Discussions similaires

  1. aide utilisation commande sed
    Par fbb53 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 27/07/2011, 15h50
  2. Aide commande sed
    Par JoneZy dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 12/11/2009, 19h13
  3. Aide: commande SED
    Par efelant dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 08/12/2008, 09h47
  4. Aide sur commande Sed
    Par comboDev dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 09/11/2008, 13h20
  5. Aide sur les commandes sed et awk
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 20/06/2006, 08h22

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