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

AIX Discussion :

Comment changer une chaine de caractères et une seule ?


Sujet :

AIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Par défaut Comment changer une chaine de caractères et une seule ?
    Bonjour,

    On vient de me poser une colle et séche dessus depuis 2 heures

    Voilà le problème, on souhaite manipuler dans un shell (en ksh) un fichier succeptible de contenir X occurences d'une chaine de caractères dans chaque enregistrement mais on souhaite ne modifier que la première que l'on rencontre sans toucher aux autres qui suivront.

    La commande sed semblait toute indiquée mais voilà elle modifie une ocurrence dans chaque enregistrement et là c'est pas bon du tout....

    Je suis aller voir si awk pouvait m'aider mais là non plus je ne vois rien qui fait mon bonheur

    Y-a-t-il une commande qui saurait voir le fichier non pas comme une suite d'enregistrements mais comme un bloc unique à traiter ?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Par défaut
    J'ai une ruse : tu appelles le support IBM, et tu leurs dis que dans la man page de sed il est écrit :

    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
     
    "s/pattern/replacement/flags
                Substitutes the replacement string for the first occurrence of the
                pattern parameter in the pattern space. Any character that is
     
                displayed after the s subcommand can substitute for the / (slash)
                separator except for the space or new-line character.
     
                See the "Pattern Matching" section of the ed command.
     
                The value of the flags variable must be zero or more of:
                  g
                       Substitutes all non-overlapping instances of the pattern
                       parameter rather than just the first one.
                  n
                       Substitutes for the n-th occurrence only of the pattern
                       parameter.
    "
    Ce qui veut dire que sed 's/mot1/mot2' ou sed 's/mot1/mot2/1' ne devrait remplacer qu'une seule occurence de mot1 par mot2, et pourtant c'est tout le fichier qui est affecté. D'où bug. D'où à eux de te dire comment le corriger ou le faire marcher, et toc

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut sed '0,/chaine/s//new/' fichier
    devrait fonctionner
    - W
    PS: Pourquoi AIX?
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Par défaut
    LOL, je reviens de vacances et j'ai adoré ta réponse Letis, dès que j'ai le temps j'essaie d'appeler IBM et promis je donne leur réponse s'ils ont une solution

    Pourquoi AIX ??? bah, parce que j'ai ce problème sur un système en AIX 5.3.3 tout simplement ....

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 776
    Par défaut
    Pourquoi AIX ??? bah, parce que j'ai ce problème sur un système en AIX 5.3.3 tout simplement ....
    Ma question était motivée par la mention dans votre post de KSH, SED, AWK... pour effectuer une opération dans laquelle AIX n'est, "à priori" pas très concerné - vous pourriez avoir le même soucis sur n'importe quel Linux, Solaris, ou encore cygwin/mingw
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 10
    Par défaut
    Je viens de tester votre formule magique wizstricks mais elle n'a aucun effet :

    # sed '0,/123/s//XXXXXXXX/' z
    toto blabalabla mdldmd123 &"('123 1234 &22345 totototo toto
    toto blabalabla mdldmd123 &"('123 1234 &22345 totototo toto
    toto blabalabla mdldmd123 &"('123 1234 &22345 totototo toto

    La mienne au moins changeait la 1 ere occurence sur chaque ligne ...

    #sed 's/123/XXXXXXXX/1' z
    toto blabalabla mdldmdXXXXXXXX &"('123 1234 &22345 totototo toto
    toto blabalabla mdldmdXXXXXXXX &"('123 1234 &22345 totototo toto
    toto blabalabla mdldmdXXXXXXXX &"('123 1234 &22345 totototo toto

    Aurais-je mal compris votre syntaxe ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/07/2011, 16h31
  2. Comment créer un document XML à partir d'une chaine de caractères
    Par imad_eddine dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 19/11/2007, 18h09
  3. Comment changer le jeu de caractères d'une base ?
    Par Mister Paul dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 02/03/2007, 04h19
  4. JSP : comment remplacer une chaine de caractères par une autre
    Par techquos dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/12/2006, 09h37

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