Menu

PB avec un sed pour substitution caractères [Résolu]

Messages postés
85
Date d'inscription
mercredi 13 février 2013
Dernière intervention
15 janvier 2019
- - Dernière réponse : UnGnU
Messages postés
1174
Date d'inscription
lundi 2 mai 2016
Dernière intervention
28 mars 2019
- 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



Afficher la suite 

Votre réponse

1 réponse

Messages postés
1174
Date d'inscription
lundi 2 mai 2016
Dernière intervention
28 mars 2019
163
0
Merci
Salut,

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

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

JsuisNul
Messages postés
85
Date d'inscription
mercredi 13 février 2013
Dernière intervention
15 janvier 2019
-
Super !!! c'était bien cela. Du coup, j'ai appris à quoi servait le "g"

Merci beaucoup
UnGnU
Messages postés
1174
Date d'inscription
lundi 2 mai 2016
Dernière intervention
28 mars 2019
163 > JsuisNul
Messages postés
85
Date d'inscription
mercredi 13 février 2013
Dernière intervention
15 janvier 2019
-
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
Commenter la réponse de UnGnU