PB avec un sed pour substitution caractères

Résolu/Fermé
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 18 sept. 2018 à 13:50
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 - 18 sept. 2018 à 14:23
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 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
18 sept. 2018 à 14:02
Salut,

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

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

0
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 1
18 sept. 2018 à 14:08
Super !!! c'était bien cela. Du coup, j'ai appris à quoi servait le "g"

Merci beaucoup
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024
18 sept. 2018 à 14:23
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