Manipulation de données issues d'1 fic Excel
Résolu/Fermé
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
-
20 avril 2007 à 13:11
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 - 21 avril 2007 à 12:09
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 - 21 avril 2007 à 12:09
A voir également:
- Manipulation de données issues d'1 fic Excel
- Liste déroulante excel - Guide
- Trier des données excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
6 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
20 avril 2007 à 13:33
20 avril 2007 à 13:33
Salut Bob,
faire un fichier A (en éliminant les 10 premières lignes) afin que chaque ligne ne contienne que les 6 valeurs (virer les espaces, les virgules).
Virer les 10 premières lignes ça j'ai compris et c'est faisable, par contre virer les virgules et les espaces ???
Réinjecter ces données dans un nouveau fichier Excel de telle manière que chaque ligne du nouveau fichier Excel contiennent 6 cellules avec 1 valeur par cellule !
Avec le bout de fichier du dessus, peux-tu nous mettre un exemple de ce que tu attends en sortie s'il te plaît, cmerci.
Tu tiens absolument à faire ce traitement en Perl ? Parce que le spécialiste maison (lami20j) est absent pour 1 mois ;-((
;-))
faire un fichier A (en éliminant les 10 premières lignes) afin que chaque ligne ne contienne que les 6 valeurs (virer les espaces, les virgules).
Virer les 10 premières lignes ça j'ai compris et c'est faisable, par contre virer les virgules et les espaces ???
Réinjecter ces données dans un nouveau fichier Excel de telle manière que chaque ligne du nouveau fichier Excel contiennent 6 cellules avec 1 valeur par cellule !
Avec le bout de fichier du dessus, peux-tu nous mettre un exemple de ce que tu attends en sortie s'il te plaît, cmerci.
Tu tiens absolument à faire ce traitement en Perl ? Parce que le spécialiste maison (lami20j) est absent pour 1 mois ;-((
;-))
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
20 avril 2007 à 13:48
20 avril 2007 à 13:48
Pardon j'ai pas répondu aux questions :
disons que le fichier final serait comme ça par exemple :
ligne 1 : 7 14 383 31 549 348
ligne 2 : 8 19 367 44 790 469
ligne 3 : 9 10 373 48 448 250
etc ...
je sais pas si c'est clair ...
:-))
disons que le fichier final serait comme ça par exemple :
ligne 1 : 7 14 383 31 549 348
ligne 2 : 8 19 367 44 790 469
ligne 3 : 9 10 373 48 448 250
etc ...
je sais pas si c'est clair ...
:-))
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
20 avril 2007 à 13:54
20 avril 2007 à 13:54
Excellent Mister Jipicy !!!!
Bien évidemment je pensais à quelque chose comme sed ou autre ! Je pense que ça m'ira pour le moment !
Je ne valide pas comme résolu car je pense qu'il y aura quelques détails à mettre au point .....
Mille merci !
-:))
Bien évidemment je pensais à quelque chose comme sed ou autre ! Je pense que ça m'ira pour le moment !
Je ne valide pas comme résolu car je pense qu'il y aura quelques détails à mettre au point .....
Mille merci !
-:))
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
20 avril 2007 à 14:24
20 avril 2007 à 14:24
Re,
Je reviens à la charge :
mon fichier tutu.txt :
7 14 383 31 549 348
8 19 367 44 790 469
9 10 373 48 448 250
10 3 349 49 100 76
11 3 356 52 99 73
n lignes
OK ....mais :
le "petit problème":
je souhaite homogénéiser la chose : je m'explique : prenons la ligne 7 (première ligne) :
7 (6 espaces) 14 (8 espaces) 383 (4 espaces) 31 (5 espaces) 549 (8 espaces) 348 ( 7 espaces)
et j'aurai souhaité : 1 seul espace (ou une virgule ...je sais pas encore) entre chaque valeur d'une même ligne !
Je me dit que lorsque je travaillerai sur ce fichier final, c'est peut-être mieux d'homogénéiser, non ?
Mais peut-être que ça ne posera pas de problème non plus ?
Merci !
Bob
Je reviens à la charge :
sed -e '1,9d' -e 's/.*=>//' -e 's/,/ /g' < titi.txt > tutu.txt
mon fichier tutu.txt :
7 14 383 31 549 348
8 19 367 44 790 469
9 10 373 48 448 250
10 3 349 49 100 76
11 3 356 52 99 73
n lignes
OK ....mais :
le "petit problème":
je souhaite homogénéiser la chose : je m'explique : prenons la ligne 7 (première ligne) :
7 (6 espaces) 14 (8 espaces) 383 (4 espaces) 31 (5 espaces) 549 (8 espaces) 348 ( 7 espaces)
et j'aurai souhaité : 1 seul espace (ou une virgule ...je sais pas encore) entre chaque valeur d'une même ligne !
Je me dit que lorsque je travaillerai sur ce fichier final, c'est peut-être mieux d'homogénéiser, non ?
Mais peut-être que ça ne posera pas de problème non plus ?
Merci !
Bob
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
20 avril 2007 à 15:53
20 avril 2007 à 15:53
Si tu tiens à formater le tout, voilà une solution avec "awk" en sus...
sed '1,9d;s/.*=>//;s/,/ /g' fich | awk '{printf "%5s %5s %5s %5s %5s %5s \n",$1,$2,$3,$4,$5,$6}' 7 14 383 31 549 348 8 19 367 44 790 469 9 10 373 48 448 250 10 3 349 49 100 76 11 3 356 52 99 73 12 11 358 58 411 277 18 11 393 27 432 251;-))
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
20 avril 2007 à 16:19
20 avril 2007 à 16:19
Merci à toi Jipicy c'est ...........................parfait !
et mon fichier tutu.txt :
7 14 383 31 549 348
8 19 367 44 790 469
9 10 373 48 448 250
10 3 349 49 100 76
11 3 356 52 99 73
12 11 358 58 411 277
18 11 393 27 432 251
19 22 414 29 1018 587
21 6 405 40 198 186
etc ....
J'ai une question : est-il possible d'intégrer le code dans un script (c'est plus facile pour les utilisateurs !).
Bob
sed '1,9d;s/.*=>//;s/,/ /g' < titi.txt | awk '{printf "%5s %5s %5s %5s %5s %5s \n",$1,$2,$3,$4,$5,$6}' > tutu.txt
et mon fichier tutu.txt :
7 14 383 31 549 348
8 19 367 44 790 469
9 10 373 48 448 250
10 3 349 49 100 76
11 3 356 52 99 73
12 11 358 58 411 277
18 11 393 27 432 251
19 22 414 29 1018 587
21 6 405 40 198 186
etc ....
J'ai une question : est-il possible d'intégrer le code dans un script (c'est plus facile pour les utilisateurs !).
Bob
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
20 avril 2007 à 16:36
20 avril 2007 à 16:36
#! /bin/bash # bob.sh if [ "$#" -lt "2" -o "$#" -gt "2" ] then echo "Usage : $0 <fichier.entrée> <fichier.sortie>" echo exit 2 fi sed '1,9d;s/.*=>//;s/,/ /g' "$1" |\ awk '{printf "%5s %5s %5s %5s %5s %5s \n",$1,$2,$3,$4,$5,$6}' > "$2" exit;-)
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
20 avril 2007 à 20:35
20 avril 2007 à 20:35
ça me donne ceci (j'ai fait un copier-coler de ton exemple) :
[zozo@localhost Reception]$
Usage : ./bob.sh <titi.txt> <tyty.txt>
[zozo@localhost Reception]$
Là je teste sur ma Mandriva !
je ne suis pas un expert de la programmation shell et de l'écriture de scripts bash ( je comprends pas les deux premières lignes de ton script !) mais il me semble avoir lu un post sur CCM ou tu proposais une solution de script avec Usage
....je vais essayer de retrouver ça (c'était clair et limpide !) :-))
tiens J'ai trouvé ceci :
http://abs.traduc.org/abs-4.2.01-fr/index.html
je crois que c'est pour ma pomme !!!!
:-)
[zozo@localhost Reception]$
./bob.sh
Usage : ./bob.sh <titi.txt> <tyty.txt>
[zozo@localhost Reception]$
Là je teste sur ma Mandriva !
je ne suis pas un expert de la programmation shell et de l'écriture de scripts bash ( je comprends pas les deux premières lignes de ton script !) mais il me semble avoir lu un post sur CCM ou tu proposais une solution de script avec Usage
....je vais essayer de retrouver ça (c'était clair et limpide !) :-))
tiens J'ai trouvé ceci :
http://abs.traduc.org/abs-4.2.01-fr/index.html
je crois que c'est pour ma pomme !!!!
:-)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
20 avril 2007 à 20:49
20 avril 2007 à 20:49
Re-
Le script doit être lancé avec 2 fichiers en paramètres, le fichier d'entrée et le fichier de sortie. Donc la 1ère ligne :
teste l'existence des 2 paramètres, "$#" renvoie le nombre de paramètres.
La 1ère expression ("$#" -lt "2") teste si le nombre de paramètre est inférieur à 2 et la 2nd ("$#" -gt "2") s'il est supérieur à 2, dans l'une ou l'autre des situations, on affiche la façon dont doit être lancé le script :
;-))
Le script doit être lancé avec 2 fichiers en paramètres, le fichier d'entrée et le fichier de sortie. Donc la 1ère ligne :
if [ "$#" -lt "2" -o "$#" -gt "2" ]
teste l'existence des 2 paramètres, "$#" renvoie le nombre de paramètres.
La 1ère expression ("$#" -lt "2") teste si le nombre de paramètre est inférieur à 2 et la 2nd ("$#" -gt "2") s'il est supérieur à 2, dans l'une ou l'autre des situations, on affiche la façon dont doit être lancé le script :
then echo "Usage : $0 <fichier.entrée> <fichier.sortie>" echo exit 2 fiVoir à ce sujet : guide d utilisation du shell pour debutant#xv la structure d une page de man
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
20 avril 2007 à 14:37
20 avril 2007 à 14:37
Re-,
J'en reste à la solution fournie par Jipicy et considère ce post comme résolu !
@++,
bob
J'en reste à la solution fournie par Jipicy et considère ce post comme résolu !
@++,
bob
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
21 avril 2007 à 10:37
21 avril 2007 à 10:37
Re-
Tiens essaie ça sur ton fichier d'entrée (en csv) :
;-))
Tiens essaie ça sur ton fichier d'entrée (en csv) :
sed '1,10d;s/\"//g;s/[ ]*//g' fichier_entrée.csv > fichier_sortie.csvet pour l'ouverture, choisis la virgule comme séparateur.
;-))
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
21 avril 2007 à 12:09
21 avril 2007 à 12:09
Tu es .....................Super ! C'est exactement ça !
:-))
Bigre !
La programmation shell ......c'est chouette tout de même (voir puissant ! ).
Et tout ce que je demandais tiens en ..............une demi-ligne : excellent !
Tu es vraiment formidable ! :-))
Y a plus qu'à prendre exemple !
Excellent week-end !
:-)))
Bobby
:-))
Bigre !
La programmation shell ......c'est chouette tout de même (voir puissant ! ).
Et tout ce que je demandais tiens en ..............une demi-ligne : excellent !
Tu es vraiment formidable ! :-))
Y a plus qu'à prendre exemple !
Excellent week-end !
:-)))
Bobby
20 avril 2007 à 13:42
Tu tiens absolument à faire ce traitement en Perl
non pas nécessairement, je peux travailler directement sur le fichier txt (la réinjection des données dans un nouveau tableau Excel n'est pas primordiale)
dans ce cas : à partir du fichier txt ci-dessus (appelons le fichier A) obtenir un nouveau fichier (appelons le fichier B) ne contenant que les lignes qui contiennent les 6 valeurs avec par exemple un espace entre chaque valeur.
Ainsi je peux retravailler sur ce nouveau fichier (manipuler, extraire les données)
Merci à toi.
Bob
20 avril 2007 à 13:49