Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2207 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BASH] Contenu d'un chaîne séparer par ";" (CSV)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BASH] Contenu d'un chaîne séparer par ";" (CSV)

n°1247208
ptibat
Posté le 16-11-2005 à 22:17:39  profilanswer
 


Bonjour  :)  
 
Voilà j'ai un fichier de type CSV avec des mot séparer par des ";"  (exemple d'un ligne : 1;champ1;champ2;champ3 )
Dans mon programme je fait une recherche et il me retourne par exemple 3 ligne contenant ce que je recherche :
 
1;champ1;champ2;champ3
5;champ1;champ2;champ3
6;champ1;champ2;champ3
 
 
J'aimerai pour chaque ligne mettre dans 4 variables ce qu'il y a entre les ";" et ce qui me donnerai pour la première réponse :
 
var1 = 1
var2 = champ1
var3 = champ2
var4 = champ3
 
que je pourrai ensuite exploiter ... :)
 
Auriez-vous une idée pour réaliser ceci ?  
Merci :jap:
 


---------------
flick r
mood
Publicité
Posté le 16-11-2005 à 22:17:39  profilanswer
 

n°1247275
art_dupond
je suis neuneu... oui oui !!
Posté le 17-11-2005 à 01:13:52  profilanswer
 

une piste: for /?
 

Code :
  1. for /F "tokens=1,2,3,4 delims=; " %i in (test.txt) do @echo %i %j %k %l


Message édité par art_dupond le 17-11-2005 à 01:14:10
n°1247986
ptibat
Posté le 17-11-2005 à 22:24:50  profilanswer
 


Ok merci je vais essayer :)


---------------
flick r
n°1248001
olivthill
Posté le 17-11-2005 à 22:43:02  profilanswer
 

Je crois que la bonne réponse d'art_dupond est pour Windows/DOS, alors que la question est pour bash qui est un shell Unix.
Donc une solution pour Unix est  (non testé):
 

cat nom_du_fichier.csv | while read la_ligne
do
   var1=`echo $la_ligne | cut -d";" -f1`
   var2=`echo $la_ligne | cut -d";" -f2`
   var3=`echo $la_ligne | cut -d";" -f3`
   var4=`echo $la_ligne | cut -d";" -f4`
done

(Mais matafan va nous donner sans doute une meilleure solution :) )

n°1248010
art_dupond
je suis neuneu... oui oui !!
Posté le 17-11-2005 à 22:52:32  profilanswer
 

oups j'ai lu batch :p


---------------
oui oui
n°1248077
matafan
Posté le 18-11-2005 à 04:42:40  profilanswer
 

On peut éviter l'usage multiple de cut en utilisant le "word splitting" du shell. Par exemple :

#!/bin/sh
 
cat txt | while IFS=';' read var1 var2 var3 var4
do
        echo "$var1 - $var2 - $var3 - $var4"
done


 
Edit : typo


Message édité par matafan le 18-11-2005 à 04:43:14
n°1248083
Elmoricq
Modérateur
Posté le 18-11-2005 à 07:04:15  profilanswer
 

Ou selon ce qu'on veut faire des champs récupérés, utiliser awk peut être avantageux.

n°1274182
ptibat
Posté le 28-12-2005 à 19:27:42  profilanswer
 


Génial ca marche :)
Merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BASH] Contenu d'un chaîne séparer par ";" (CSV)

 

Sujets relatifs
Renvoi d'un chaîne d'adresse XValues etc...[Resolu][CSS] Mozilla / IE - div et contenu
[bash] recuperer le resultat d'une commande SQL dans une variable bashStocker le contenu d'un input texte dans une variable.
recherche négative d'une chaîne de caractères sous unix[RESOLU]Mettre le contenu d'une variable dans le corps d'un mail
Afficher le contenu d'1 fichier XML dans un flash - Master NooB insideDOS : manipulation de chaîne ...
Comment récupérer le contenu d'une balise xml ?Debutant - Comparaison de chaine de caractère
Plus de sujets relatifs à : [BASH] Contenu d'un chaîne séparer par ";" (CSV)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR