Le Jeudi 21 Avril 2005 10:45, Charles-Henri d'Adhémar a écrit : > Hello, > > j'ai besoin d'un petit coup de main en programmation shell. > Je dois faire un petit script shell dans le cadre de mon boulot : pour > migrer des donnees d'un serveur de DB vers un autre (peut importe en > faite). > > J'ai un fichier dans lequel j'ai le resultat d'une requete sql (oracle). > chaque ligne est de la forme : > > dat1, data20 data21, data3,.... > > je veux parser ce fichier : > > for i in `cat fichier.csv` > do > field1=`echo $i | cut -d ',' -f1` > etc... > done > > le probleme est que lors du cat, la boucle for split chaque fois qu'il > rencontre un espace, cad qu'une ligne peut ainsi se retrouver decoupee en > plusieurs ligne, et donc ma variable i ne contient pas la ligne entiere > mais seulement des bouts. > > La solution que j'ai trouve est d'eliminer les espaces indesirables (avec > sed) entre les virgules (separateur de champ). Pour ce qui est des espaces > entre les mots (que je souhaite conserver) je les remplace par \s avant le > cat, puis je les remet en tant qu'espace au parsing... > > Vous me suivez ? > > Comment faire pour eviter de faire ca, cad que le for ne split pas mon cat > quand il rencontre des espaces...
Mets des guillemets autour de ton `cat fichier.csv` -> "`cat fichier.csv`" ++ Gontran
