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 :

Sed et variable


Sujet :

Linux

  1. #1
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut Sed et variable
    Bonjour,

    Je butte sur une commande sed à priori tout simple, dans un script shell, qui utilise une variable.

    La commande sed doit ajouter une chaine de caractères après la ligne définie par son numéro qui est contenu dans une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i "\"$LINE\"a\ecrit toto" ./fic.txt
    Le "a" est l'opérateur qui permet de dire à sed de rajouter la chaine "ecrit toto" en-dessous de la ligne $LINE.

    Quelle est la syntaxe pour que cela fonctionne ?

    Merci pour votre aide.
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i "/$LINE/aecrit toto" ./fic.txt
    entre les /, on place le motif à chercher.
    la \ après le a sert qu'on passe à la ligne immédiatement après a, c'est, je crois, plus utiliser dans les scripts sed.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Ma commande fonctionne bien si au lieu de la variable, je mets directement le numéro de la ligne.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i "4a\ecrit toto" ./fic.txt
    fic.txt original :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    toto 1
    toto 2
    toto 3
    toto 4
    toto 5
    fic.txt après exécution de la commande sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    toto 1
    toto 2
    toto 3
    toto 4
    ecrit toto
    toto 5
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    ah, pardon, je n'avais pas lu que tu souhaites utiliser le numéro de ligne
    il faut distinguer la variable de ce qui la suit en utilisant les accolades :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ligne=4
    sed "${n°Ligne}aecrit toto" fichier
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Mais oui, tout simplement !

    Un grand merci
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

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

Discussions similaires

  1. Utilisation de la commande sed avec variable
    Par elfide dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/12/2011, 17h56
  2. Sed et variables
    Par danathane dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 26/05/2011, 18h21
  3. [QST] sed et variable
    Par hannibal.76 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 25/04/2011, 11h40
  4. Substitution sed avec variables
    Par zekounnet dans le forum Linux
    Réponses: 0
    Dernier message: 29/11/2008, 13h16
  5. SED et variables.
    Par pcsystemd dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 06/05/2008, 11h42

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