Menu

Importer des fichiers csv dans un tableau en shell [Résolu/Fermé]

-
Bonjour,

J'ai besoin de votre aide car je suis totalement perdu.
J'ai un certains nombre de fichers.csv.
Je dois écrire un script qui cherchera dans le sous-répertoire tous les fichiers et qui les mettra dans d’un tableau.. Chaque fichiers csv doit se retrouver dans une case du tableau.

Quelqu'un pour m'orienter???

merci



Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4321
1
Merci
hello
1 fichier par élément du tableau
$ ls *csv
f1.csv f2.csv f3.csv
$ more *csv
::::::::::::::
f1.csv
::::::::::::::
a;b;c;d
::::::::::::::
f2.csv
::::::::::::::
1;2;3;4
::::::::::::::
f3.csv
::::::::::::::
1000;1001;1002;1003;1004
$ readarray -t t < <(cat *csv)
$ echo ${#t[@]}
3
$ printf "%s\n" "${t[@]}"
a;b;c;d
1;2;3;4
1000;1001;1002;1003;1004

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 38989 internautes nous ont dit merci ce mois-ci

dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4321 -
$f le nom du fichier, cat $f son contenu
$ ls *.csv
f1.csv f2.csv f3.csv
$ unset t; for f in *.csv; do t[${#t[@]}]=$f; done
$ printf "%s\n" ${t[@]}
f1.csv
f2.csv
f3.csv

zipe31
Messages postés
36532
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 mai 2019
3557 > dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
-
Salut,
$ ls *.csv
f1.csv f2.csv f3.csv f4.csv f5.csv f6.csv

$ t=( *.csv )

$ printf "%s\n" ${t[@]}
f1.csv
f2.csv
f3.csv
f4.csv
f5.csv
f6.csv

;-))
dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4321 -
:) pourquoi faire simple quand on peut faire compliqué
zipe31
Messages postés
36532
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 mai 2019
3557 > dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
-
C'est la devise de l'administration française ;-)
je vous remercie pour vos réponses.
Messages postés
1189
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
23 mai 2019
117
0
Merci
Bonjour,

C'est si compliqué que ça de chercher un minimum ?
#!/bin/bash

set Tableau


awk 'BEGIN { FS=" " }
{ligne [NR] = $0
ref1 [NR] = $2
ref2 [NR] = $3
ref3 [NR] = $4 ## mon fichier à 4 lignes
}
END {
print NF
print NR

for ( i = 1 ; i <= NR ; i++ ){ printf( Tableau=ligne ) }

} ' fic1.csv

cette commande awk , récupère dans un premier temps toutes les lignes de fichier.csv en les mettant dans le tableau . puis après imprime à l'écran toute les lignes du fichier .
Suis-je sur la bonne voie???

L'objectif pour moi étant de concaténer le contenu du tableau par la suite.



Ps: j'ai plusieurs fichiers
UnGnu, S'il vous plaît vous avez une idée?
UnGnU
Messages postés
1189
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
23 mai 2019
117 > loulou -
La solution de dubcek ne te convient pas ?
Je penses avoir un autre soucis.
est ce que dans cette ligne de commande
unset t; for f in *.csv; do t[${#t[@]}]=$(cat $f); done

je peux ajouter le chemin d'un répertoire? Car mes fichiers sont dans un sous répertoire et il ne me les trouve pas.
UnGnU
Messages postés
1189
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
23 mai 2019
117 > loulou -
Ben oui tu peux.

Ou tu te places avant dans le bon répertoire, ou tu rajoutes le chemin directement dans le "for".