Comment avoir en ksh la liste des elements d'une colonne - Shell/Batch - Programmation
Marsh Posté le 28-11-2006 à 16:56:09
Il faut positioner IFS à "\n" :
(IFS="\n"; for i in `cut -d\; -f1 txt`; do echo $i; done) |
Mais bon, awk est probablement plus adapté.
Marsh Posté le 29-11-2006 à 09:52:42
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
J'ai aussi essayé avec awk mais meme resultat :
IFS=$'\n'
for i in $( awk -F\; '{ print $1 }' $fic_import )
do
echo "Ligne : $i \n"
done
ç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
Marsh Posté le 29-11-2006 à 10:37:11
nawk -F';' '{ print $1 }' fichier |
ou encore avec le awk standard :
awk '{ FS=";" ; print $1 }' fichier |
sinon y a perl aussi :
perl -n -e '$_ =~ s/;.*// and print $_' fichier |
ou bien (avec notion de n° de champ) :
perl -n -e 'split /;/, $_ ; print "$_[0]\n" ' fichier |
ou bien, si on aime l'alambiqué :
OLDIFS=$IFS |
Marsh Posté le 28-11-2006 à 14:41:08
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