Importer des fichiers csv dans un tableau en shell
Résolu/Fermé
loulou
-
Modifié le 27 mars 2018 à 11:30
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 30 mars 2018 à 16:13
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 30 mars 2018 à 16:13
A voir également:
- Importer des fichiers csv dans un tableau en shell
- Tableau word - Guide
- Tableau ascii - Guide
- Tableau croisé dynamique - Guide
- Trier un tableau excel - Guide
- Renommer des fichiers en masse - Guide
2 réponses
dubcek
Messages postés
18769
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 629
27 mars 2018 à 14:19
27 mars 2018 à 14:19
hello
1 fichier par élément du tableau
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
UnGnU
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
157
27 mars 2018 à 12:12
27 mars 2018 à 12:12
Bonjour,
C'est si compliqué que ça de chercher un minimum ?
C'est si compliqué que ça de chercher un minimum ?
UnGnU
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
157
>
loulou
27 mars 2018 à 12:25
27 mars 2018 à 12:25
Si tu as cherché comme tu dis, commence par nous montrer ce que tu as fait...
#!/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
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
Messages postés
1158
Date d'inscription
lundi 2 mai 2016
Statut
Contributeur
Dernière intervention
22 décembre 2020
157
>
loulou
28 mars 2018 à 11:43
28 mars 2018 à 11:43
La solution de dubcek ne te convient pas ?
Modifié le 28 mars 2018 à 07:15
28 mars 2018 à 09:52
Je vous remercie pour votre aide. Je vais tester cela et essayer de compléter pour voir si cela fonctionne.
Je vous tiens informé.
Merci
28 mars 2018 à 11:43
28 mars 2018 à 12:06
unset t; for f in *.csv; do t[${#t[@]}]=$(cat $f); done
Car mes fichiers sont dans un sous répertoire et il ne me les trouve pas.
28 mars 2018 à 12:08