[Shell] Remplacement de chaine

[Résolu/Fermé]
Signaler
-
 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

Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
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"
Merci beaucoup zipe31.
J'y avais pas pensé, et c'était là, devant mes yeux !!!!