[Shell] Remplacement de chaine

Résolu/Fermé
Deeper - 30 janv. 2012 à 12:21
 Deeper - 30 janv. 2012 à 13:58
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
A voir également:

2 réponses

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