[Shell] Remplacement de chaine

Résolu
Deeper -  
 Deeper -
Bonjour,

Je souhaiterais tester un fichier ligne par ligne.
Chaque ligne est une requête SQL qui doit absolument contenir un espace après chaque virgule.
Je ne sais pas si SED suffit ou si il faut du awk.
Pour l'instant j'ai ça :
wsdscer161d4:deep:> echo "c,d, e,f,g" | sed 's/,[a-zA-Z0-9]/, /g'
Résultat : c, , e, ,
Et je souhaiterais c, d, e, f, g
Une solution consisterait à remplacer toutes les "," par ", " et de remplacer les deux espaces par un seu ('echo c, d, e, f, g | sed -e "s/ / /"') mais je ne trouve pas ca très propre.

De plus, je ne gère pas les ' et " dans mon exemple.
Si j'ai ," dans ma requête, je suis marron...

Quelqu'un aurait'il une idée ?

Merci d'avance
Deep

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ echo "c,d, e,f,g,\"" | sed 's/, */, /g'
    c, d, e, f, g, "
    
    $

    PS. Il y a un espace après la 1ère virgule et avant l'astérisque dans la syntaxe de "sed"
    0
  2. Deeper
     
    Merci beaucoup zipe31.
    J'y avais pas pensé, et c'était là, devant mes yeux !!!!
    0