Modifier une occurence avec SED

pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -  
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -
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



3 réponses

zipe31 Messages postés 38797 Statut Contributeur 6 433
 
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
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   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
Utilisateur anonyme
 
info 'sed' 'sed regular expressions' 'regexp extensions'
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
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
zipe31 Messages postés 38797 Statut Contributeur 6 433 > zipe31 Messages postés 38797 Statut Contributeur
 
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
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23
 
Merci un peu en retard mais vaut mieux tard que jamais. ;-)

0