Modifier une occurence avec SED

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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    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

    ;-)

    1. 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!
      1. info 'sed' 'sed regular expressions' 'regexp extensions'
      2. Contributeur
        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.
      3. Contributeur
        @zipe31En 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.
    2. Merci un peu en retard mais vaut mieux tard que jamais. ;-)