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

1 réponse

  1. 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
    1. 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
      1. 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