Modifier une occurence avec SED

pcsystemd Messages postés 734 Statut Membre -  
pcsystemd Messages postés 734 Statut Membre -
Bonjour,

J'ai un fichier qui contient des centaines de lignes comme celles qui suivent :

Me|SED|LIA|li.ne@tit.fr|060000934|Con|f|f|08/03/2018 00:00:00|AQ J'M
M|SES|STIE|stnie.se3@rty.com|07 00 31 21 63||1 I.C.I. Ca|t|f|08/03/2018 00:00:00|ANE J'M


Je voudrais modifier les |f| en |Non| et les |t| en |Oui|

J'ai essayé
sed -e 's/|f|/|Non|/g'
mais cela ne fonctionne pas.

Une idée?
Merci



--
L'accès au savoir est la première liberté que chaque homme devrait avoir.

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ cat fich 
    Me|SED|LIA|li.ne@tit.fr|060000934|Con|f|f|08/03/2018 00:00:00|AQ J'M
    M|SES|STIE|stnie.se3@rty.com|07 00 31 21 63||1 I.C.I. Ca|t|f|08/03/2018 00:00:00|ANE J'M

    $ sed 's/\bf\b/Non/g;s/\bt\b/Oui/g' fich
    Me|SED|LIA|li.ne@tit.fr|060000934|Con|Non|Non|08/03/2018 00:00:00|AQ J'M
    M|SES|STIE|stnie.se3@rty.com|07 00 31 21 63||1 I.C.I. Ca|Oui|Non|08/03/2018 00:00:00|ANE J'M

    ;-)

    0
  2. pcsystemd Messages postés 734 Statut Membre 23
     
    Bonjour et merci zipe31.

    Je vais regarder a quoi correspond l'option b. Je suppose que c'est pour indiquer que ce doit être l’occurrence strict a modifier!
    0
    1. Utilisateur anonyme
       
      info 'sed' 'sed regular expressions' 'regexp extensions'
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Tu as une définition succincte dans la FAQ sur SED :
      \b

      correspond à une chaîne vide à l'extrémité d'un mot. Limite entre un mot et un caractère autre qu'un mot


      \B

      correspond à une chaîne vide ne se trouvant pas à une extrémité de mot. Limite entre un caractère autre qu'un mot et un mot

      \<

      correspond à une chaîne vide en début de mot


      \>

      correspond à une chaîne vide en fin de mot


      Sinon le
      man grep
      en parle aussi :

         The Backslash Character and Special Expressions
      The symbols \< and \> respectively match the empty string at the beginning and end of a word.
      The symbol \b matches the empty string at the edge of a word, and \B matches the empty string provided it's not at the edge of a word.
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention  
         
        En français c'est mieux ;-))
           Caractère contre-oblique et les expressions spéciales
        Les symboles \< et \> correspondent respectivement à une chaîne vide en début et en fin de mot. Le symbole \b correspond à une chaîne vide à l'extrémité d'un mot, et \B correspond à une chaîne vide ne se trouvant pas à une extrémité de mot.
        0
  3. pcsystemd Messages postés 734 Statut Membre 23
     
    Merci un peu en retard mais vaut mieux tard que jamais. ;-)

    0