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

Shell et commandes GNU Discussion :

sed en ajoutant une ligne à $ligne


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut sed en ajoutant une ligne à $ligne
    Bonjour mes amis

    je débute dans le shell, j'ai un petit script à faire tourner, et je n'arrive pas encore à trouver la solution ( la fonction sed est un peu sombre..) pour mon besoin.

    Voilà , j'ai un script qui tourne en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for F in *.txt
    do
    xxxxxx
    done
    j'ai un souci sur mon sed.
    mon besoin : j'ai donc plusieurs fichiers txt, et j'aimerai ajouter à n ligne, une ligne du type :

    donc j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sed 8a\  s/'\blablablabla/'\ $F> $F.clean
    mv $F.clean F$
    je lance donc mon script et rien du tout sur ma ligne ciblée.
    j'ai surement oublié un truc.

    pouvez vous m'aider ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut ou je pense à une autre solution
    j'aimerai si c'est possible, non pas d'ajouter à partir d'un nombre de ligne mais à partir de caractère sur une ligne et automatiquement , ajouter une ligne juste après avec mon blablabla

  3. #3
    Expert confirmé 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 : 48
    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
    Par défaut
    en utilisant la commande append ou insert de sed par exemple
    ici j'ajoute tyty apres la ligne ou il y a tata

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    operateur@undertaker:/tmp$ cat > test
    toto
    titi
    tata
    tutu
    operateur@undertaker:/tmp$ sed "/tata/a\
    > tyty
    > " test
    toto
    titi
    tata
    tyty
    tutu
    operateur@undertaker:/tmp$
    bien sur tu peux garder cette structure dans une boucle mais dans ce cas toutes les iterations successivent peuvent avoir un resulat inatendu si tu ne définis pas très sévèrement les expressions sur lequelles tu veux intervenir.

    dans ton cas qui consiste a faire ça sur N fichiers :
    tu n'est pas ennuyé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    operateur@undertaker:/tmp$ cp test test2 
    operateur@undertaker:/tmp$ cp test test3 
    operateur@undertaker:/tmp$ for i in test* ; do sed "/tata/a\
    > tyty
    > " $i > $i.new ; mv $i $i.old ; mv $i.new $i ; done
    operateur@undertaker:/tmp$ cat test test2 test3
    toto
    titi
    tata
    tyty
    tutu
     
    toto
    titi
    tata
    tyty
    tutu
     
    toto
    titi
    tata
    tyty
    tutu
    operateur@undertaker:/tmp$ rm test*

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut merci pour le coup de main mais je comprends toujorus pas :-)
    si j'ai bien compris ta réponse, on met un guillemet au commencement et à la fin ( fin de balise finalement) : c'est bien ça ? je mettais des côtes...

    De plus, pour la ligne dont je veux insérer par la suite une ligne, elles contiennent des caractères du type "et > ( idem sur la ligne à ajouter)
    dois je mettre des côtes pour prendre en compte les caracètres spéciaux ?

    en gros, je me retrouve toujours sans réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for F in *.txt
    do
    echo test $F
    sed "  /xxxxxxxx>à"xxxxx/a\
    > xxxx>xxxx>à"xxxxx
    mv $F.new $F
    done

  5. #5
    Expert confirmé 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 : 48
    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
    Par défaut
    les caracteres spéciaux se protègent avec un "\"

    \&
    \*
    etc....

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut Merci ^ ^
    dernière chose avant de te laisser tranquile
    Comment connaitre la version de son vi ?
    car j'ai cru entendre que selon des versions, les Sed peuvent différer selon leurs résultats.

Discussions similaires

  1. Ajouter une nouvelle ligne avec les calculs
    Par Myogtha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2009, 10h19
  2. comment ajouter une autre ligne dans un texbox
    Par enretard dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/07/2008, 14h51
  3. Ajouter une nouvelle ligne sous la cellule actuellement sélectionnée
    Par agronomia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/02/2008, 09h50
  4. message "Vous allez ajouter une nouvelle ligne"
    Par Rizel dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/09/2007, 14h10
  5. Réponses: 7
    Dernier message: 11/06/2007, 20h39

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