Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
avoir les elements d'une colonne
Envoyé par: Sylvie S.

Bonjour,

J'ai un fichier csv avec deux colonnes :
ma valeur 1;toto
ma valeur 2;titi
ma valeur 3;tata
...

J'ai besoin d'extraire chaque ligne de la premiere colonne.

J'ai essayé le code suivant :

tbl_Source=`grep "^" $fichier|cut -d";" -f1`

for ligne in $tbl_Source
do
#on log chaque ligne
echo $ligne
done


Malheuresement, j'obtient le resultat suivant :
ma
valeur
1
ma
valeur
2
...

Et non
ma valeur 1
ma valeur 2
...

Je doit me tromper dans la commande utilisée.

Avez-vous vous une idée ?

Merci pour votre aide

Poste le Tuesday 28 November 2006 14:38:56
Répondre     Citer    
Re: avoir les elements d'une colonne
Envoyé par: oudoubah

tbl_source contient "ma valeur 1 ma valeur 2 ma valeur 3"
Donc, quand tu fais un for dessus, il prend correctement les éléments un par un.

Voilà le pourquoi, reste plus qu'à trouver une solution. Tout dépend de ce que tu veux faire (simplement afficher, ou faire un traitement dans la boucle)

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Tuesday 28 November 2006 16:58:13
Répondre     Citer    
Re: avoir les elements d'une colonne

IFS_BAK=$IFS
IFS=$'\n'
for i in $( awk -F\; '{ print $1 }' brol.txt )
do
echo -e "Ligne : $i \n"
done
IFS=$IFS_BAK


--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Tuesday 28 November 2006 19:39:38
Répondre     Citer    
Re: avoir les elements d'une colonne
Envoyé par: Sylvie S.

Merci pour votre aide, mais la solution avec awk me fait de renvoi de ligne que sur les "n" :
Exemple pour mon fichier :
mon avion;1
ma chaine;2

Donne
mo
avion
ma chai
e

ça me parraissait tout bête à faire mais cela semble vraiment problématique.

Je pense que je vais developper en pro*c, là au moins je sais manipuler des fichiers textes.

Merci pour votre aide

Poste le Wednesday 29 November 2006 09:51:37
Répondre     Citer    
Re: avoir les elements d'une colonne

# IFS_BAK=$IFS
bofh@becket:/tmp
# IFS=$'\n'
bofh@becket:/tmp
# for i in $( awk -F\; '{ print $1 }' brol.txt )
> do
> echo -e "Ligne : $i \n"
> done
Ligne : mon avion

Ligne : ma chaine


--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Wednesday 29 November 2006 21:27:42
Répondre     Citer    
Re: avoir les elements d'une colonne
Envoyé par: Sve@r

Citation
Frédéric Brugmans
# IFS_BAK=$IFS
bofh@becket:/tmp
# IFS=$'\n'
bofh@becket:/tmp
# for i in $( awk -F\; '{ print $1 }' brol.txt )
> do
> echo -e "Ligne : $i \n"
> done
Ligne : mon avion

Ligne : ma chaine


--
Brugmans Frédéric
Hum... c'est vrai qu'on peut se demander pourquoi faire simple...
cut -f1 -d\; le_fichier

Ou bien, s'il faut traiter chaque ligne par un traitement quelconque
cut -f1 -d\; le_fichier |while read ligne
do
.....<traitement quelconque> $ligne
done

Citation
Sylvie S.
Je pense que je vais developper en pro*c, là au
moins je sais manipuler des fichiers textes.
T'as tord. Dans Unix, tout est conçu à base de fichier texte. La config, le réseau, les utilisateurs, les log, etc tout est paramétré dans des fichiers textes.
Unix possède donc tout un tas d'outils spécialisés dans le traitement des fichiers texte.
- grep qui t'extrait des lignes
- cut qui t'extrait des colonnes => grep ... |cut ... te donne l'info qui va bien de la ligne qui va bien
- sed et/ou tr qui te permet de transformer une sortie écran
- awk qui t'offre des outils de programmation algorithmiques pour traiter un fichier ligne par ligne
- sort pour trier
Et le fameux pipe qui te permet d'enchaîner tous ces outils pour te faire le travail que tu veux quand tu veux...


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Thursday 30 November 2006 16:18:02
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
avoir les elements d'une colonne
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons