PB avec un sed pour substitution caractères

Résolu
JsuisNul Messages postés 137 Statut Membre -  
UnGnU Messages postés 1468 Statut Contributeur -
Bonjour,

Voila j'ai une ligne de commande qui me permet de retirer tous les espaces non significatif ainsi que le remplacement des "," par des ".".
Mon soucis se trouve au niveau du remplacement de la virgule par le point.
En effet, j'ai deux champs successifs ou la modification devrait se faire sauf que seul le premier champ est modifié.

Ma ligne en entrée :

XXXXXXX;FFFFF;GGGGG; 35,00;155,67;TTT

ma ligne de commande :

cat fic1 | sed 's/ \{2,\}//g;s/,/./' > fic2

Résultat :
XXXXXXX;FFFFF;GGGGG; 35.00;155,67;TTT

Quelqu'un pourrait me dire pourquoi le deuxième champ n'est pas modifié ?

Merci d'avance



A voir également:

1 réponse

UnGnU Messages postés 1468 Statut Contributeur 158
 
Salut,

Il manque l'option "g" (global) dans ta seconde expression ;-\

sed 's/ \{2,\}//g;s/,/./g'

0
JsuisNul Messages postés 137 Statut Membre 1
 
Super !!! c'était bien cela. Du coup, j'ai appris à quoi servait le "g"

Merci beaucoup
0
UnGnU Messages postés 1468 Statut Contributeur 158 > JsuisNul Messages postés 137 Statut Membre
 
De rien ;-)

Un seul (le 1er) :
$ echo "aXbXcXdXeXfXg" | sed 's/X/|/'
a|bXcXdXeXfXg

Tous :
$ echo "aXbXcXdXeXfXg" | sed 's/X/|/g'
a|b|c|d|e|f|g

Uniquement le 3ème :
$ echo "aXbXcXdXeXfXg" | sed 's/X/|/3'
aXbXc|dXeXfXg

Uniquement le 5ème :
$ echo "aXbXcXdXeXfXg" | sed 's/X/|/5'
aXbXcXdXe|fXg

Tous uniquement à partir du 4ème :
$ echo "aXbXcXdXeXfXg" | sed ':z;s/X/|/4;tz'
aXbXcXd|e|f|g
0