Utilise awk à la place de cut
for i in `cat fichier.csv`
do
field1=`echo $i | awk '{print $1}'`
etc...
done
Le 21/04/05, Charles-Henri d'Adhémar<[EMAIL PROTECTED]> 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...
>
> Nota : mon script doit etre compatible shell pour des problemes de portabilite
> (je jongle entre des machines unix de sun, hp, linux et ibm....) donc pas de
> bash , juste du sh !
>
> Merci beaucoup :-)
> ++
> Chicha
>
> _______________________________________________
> Nasgaia-dev mailing list
> [email protected]
> https://mail.gna.org/listinfo/nasgaia-dev
>
--
Richard 'riri' GILL
-- L'important dans vi, c'est maîtriser Echap et i --