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

Applications et environnements graphiques Discussion :

vi et expression régulière


Sujet :

Applications et environnements graphiques

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 35
    Par défaut vi et expression régulière
    Bonjour,

    Dans un fichier texte, je voudrais modifier un mot dans une ligne (TOTO par TITI) que si la ligne suivante contient un certain (TATA).

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    je suis TOTO
    TATA m'embete
    et ça ne plait pas à TOTO
    devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    je suis TITI
    TATA m'embete
    et ça ne plait pas à TOTO

    pour ça j'ai tenté sous vi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :g/TOTO.*$^.*TATA.*/%s/TOTO/TITI
    mais il ne trouve aucun texte (aucune ligne, c'est bien le problème!) vérifiant Avez-vous une idée pour faire ça?


    Merci d'avance

  2. #2
    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
    deja il manque la fin des delimiteurs ..... le "/"

  3. #3
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Le $ n'a pas l'air de marcher, avec \n ça passe. Et le % ne sert à rien, sinon, il fait la substitution sur tout le fichier !
    Quant au / final il est facultatif
    Donc ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :g/TOTO.*\n.*TATA/s/TOTO/TITI
    devrait le faire. Par contre, je ne sais pas ce qu'il se passe s'il y a un (autre) TOTO sur la ligne avec le TATA

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 35
    Par défaut
    Merci, ça fonctionne tres bien sous vi.

    Je ne connaissais pas sed, mais maintenant je n'utilise que ça. Cependant je n'arrive pas à faire la meme chose.
    Ma commande en vi est devenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s/TOTO\(.*\n.*TATA.*\)/TITI\1/g
    qui marche sous vi mais pas avec sed... quelqu'un peut-il m'expliquer pourquoi?

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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