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 technique propre c'est IFS (Internal Field Separator) qui par défaut est l'espace. Remplace le par un retour chariot avec
IFS="
"
(IFS="\n" ne marche pas)



Répondre à