Manipulation fichier .txt
Résolu/Fermé
renisaac
Messages postés
2043
Date d'inscription
dimanche 22 août 2004
Statut
Contributeur
Dernière intervention
15 mai 2021
-
18 mai 2005 à 16:36
Sissiman_972 Messages postés 8 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 13 août 2008 - 21 févr. 2008 à 14:21
Sissiman_972 Messages postés 8 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 13 août 2008 - 21 févr. 2008 à 14:21
A voir également:
- Manipulation fichier .txt
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir fichier .bin - Guide
14 réponses
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
18 mai 2005 à 17:05
18 mai 2005 à 17:05
T'es sur la bonne piste mais c'est plutôt:
reste le tab et le espace...
tab se traduit par: \t
et espace je ne sais pas, essaye de mettre tout simplement un espace...
D'autres semblent utiliser <Space><Tab> mais j'ai pas de pingouin sous la main pour tester
sed "s/[tab]/[espace]/" fichier_entrée > fichier_sortie
reste le tab et le espace...
tab se traduit par: \t
et espace je ne sais pas, essaye de mettre tout simplement un espace...
D'autres semblent utiliser <Space><Tab> mais j'ai pas de pingouin sous la main pour tester
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
18 mai 2005 à 17:20
18 mai 2005 à 17:20
En fait avec sed15 (qui fait plus ou moins la même chose sous windows) il me faut écrire
pour que ça marche
sed15 s/\t/" "/g entrée.txt
pour que ça marche
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
18 mai 2005 à 16:39
18 mai 2005 à 16:39
Salut,
Sous linux avec sed tu peux utiliser des expressions régulières, regarde dans man sed si tu trouves ce que tu veux...
Je pourrais t'aider après si tu as des problèmes, le plus dur est l'invertion JMA mais ça doit être jouable quand même sans trop de problèmes
Sous linux avec sed tu peux utiliser des expressions régulières, regarde dans man sed si tu trouves ce que tu veux...
Je pourrais t'aider après si tu as des problèmes, le plus dur est l'invertion JMA mais ça doit être jouable quand même sans trop de problèmes
renisaac
Messages postés
2043
Date d'inscription
dimanche 22 août 2004
Statut
Contributeur
Dernière intervention
15 mai 2021
138
18 mai 2005 à 16:58
18 mai 2005 à 16:58
Salut obeet,
Donc si j'ai bien lu les man, pour remplacer mon premier tab par espace, ça doit être une fonction genre
avec comme question, comment dire [tab] et [espace]? Comment dire le fichier d'entrée?
et cela ne résout pas le problème de permutation.
Renisaac
Donc si j'ai bien lu les man, pour remplacer mon premier tab par espace, ça doit être une fonction genre
sed "s/[tab]/[espace]/" fichier_sortie
avec comme question, comment dire [tab] et [espace]? Comment dire le fichier d'entrée?
et cela ne résout pas le problème de permutation.
Renisaac
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
18 mai 2005 à 17:30
18 mai 2005 à 17:30
Et comme ce n'était pas encore tout à fait l'heure de partir je me suis penché sur l'autre problème:
Donc récapitulons, pour commencer à voir si ça marche chez toi commence avec
Si jamais ça ne marche pas, les choses que tu peux tester en plus:
Mettre des ' ou des " autour de s/.../g
Ne pas mettre les \ devant les ( et les )
Ne pas mettre les " autour de l'espace (eventuellement ' )
Remplacer les \ dans \2\1\3 par des % ou de $
Voilà, tiens moi au courant pour savoir si ça marche...
Un détail si tu dois faire ça plusieurs fois, mets ça dans un script histoire de ne pas avoir à te creuser la tête à chaque fois :o)
sed15 s/\([0-9]+\/\)\([0-9]+\/\)\([0-9]+\)/\2\1\3/g test.txt
Donc récapitulons, pour commencer à voir si ça marche chez toi commence avec
sed s/\t/" "/g entrée.txt > sortie.tmp sed s/\([0-9]+\/\)\([0-9]+\/\)\([0-9]+\)/\2\1\3/g sortie.tmp > sortie.txt
Si jamais ça ne marche pas, les choses que tu peux tester en plus:
Mettre des ' ou des " autour de s/.../g
Ne pas mettre les \ devant les ( et les )
Ne pas mettre les " autour de l'espace (eventuellement ' )
Remplacer les \ dans \2\1\3 par des % ou de $
Voilà, tiens moi au courant pour savoir si ça marche...
Un détail si tu dois faire ça plusieurs fois, mets ça dans un script histoire de ne pas avoir à te creuser la tête à chaque fois :o)
renisaac
Messages postés
2043
Date d'inscription
dimanche 22 août 2004
Statut
Contributeur
Dernière intervention
15 mai 2021
138
18 mai 2005 à 17:31
18 mai 2005 à 17:31
Et tu me dis ça juste après que j'ai rebooter en linux :(
bon,
Merci déjà pour cela. Je garde bien cette commande pour les autres fichiers.
Maintenant l'inversion jours/mois. As-tu une idée? ou qq'un d'autre?
J'offre un verre à leuven, belgique, à celui qui trouve.
Renisaac
bon,
sed "s/\t/ /" li050311.txt > li050311B.txta parfaitement fonctionné!
Merci déjà pour cela. Je garde bien cette commande pour les autres fichiers.
Maintenant l'inversion jours/mois. As-tu une idée? ou qq'un d'autre?
J'offre un verre à leuven, belgique, à celui qui trouve.
Renisaac
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
18 mai 2005 à 17:40
18 mai 2005 à 17:40
Ca marche moins bien la version windows :-P
Mais tu as regardé mes autres posts? Je pense avoir donné la solution (au pire repasse sous windows et télécharge sed15 :-D désolé je l'avais oublié en fait pour être honnête, j'avais récupéré ça un jour la commande me manquait)
Mais tu as regardé mes autres posts? Je pense avoir donné la solution (au pire repasse sous windows et télécharge sed15 :-D désolé je l'avais oublié en fait pour être honnête, j'avais récupéré ça un jour la commande me manquait)
renisaac
Messages postés
2043
Date d'inscription
dimanche 22 août 2004
Statut
Contributeur
Dernière intervention
15 mai 2021
138
18 mai 2005 à 17:40
18 mai 2005 à 17:40
2° ligne, en linux : message d'erreur :
J'ai pas encore pris le temps de bien regarder dans le man ce que tu m'a fait faire.
je regarde, puis je reboot en windows pour essayer l'autre commande.
Renisaac
17:34 renisaac@localhost /mnt/win_d/document/ecowwin% sed s/\([0-9]+\/\)\([0-9]+\/\)\([0-9]+\)/\2\1\3/g li050311B.txt > li050311C.txt zsh: no matches found: s/([0-9]+/)([0-9]+/)([0-9]+)/213/g zsh: exit 1 sed s/\([0-9]+\/\)\([0-9]+\/\)\([0-9]+\)/\2\1\3/g li050311B.txt > 17:35 renisaac@localhost /mnt/win_d/document/ecowwin%
J'ai pas encore pris le temps de bien regarder dans le man ce que tu m'a fait faire.
je regarde, puis je reboot en windows pour essayer l'autre commande.
Renisaac
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
18 mai 2005 à 17:41
18 mai 2005 à 17:41
Pour sed15 il faut la télécharger je ne sais plus où...
Pour le reste essaye
sed s/([0-9]+\/)([0-9]+\/)([0-9]+)/\2\1\3/g sans doute...
Pour le reste essaye
sed s/([0-9]+\/)([0-9]+\/)([0-9]+)/\2\1\3/g sans doute...
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
18 mai 2005 à 17:42
18 mai 2005 à 17:42
Bon je suis parti, suite demain...(ou ce soir...)
renisaac
Messages postés
2043
Date d'inscription
dimanche 22 août 2004
Statut
Contributeur
Dernière intervention
15 mai 2021
138
18 mai 2005 à 17:47
18 mai 2005 à 17:47
OK, merci beaucoup en tout cas
Renisaac
Renisaac
renisaac
Messages postés
2043
Date d'inscription
dimanche 22 août 2004
Statut
Contributeur
Dernière intervention
15 mai 2021
138
18 mai 2005 à 18:05
18 mai 2005 à 18:05
Bon, il faut de tout façon les " autoure de s/.../g et remplacer les \2\1\3 par soit $ soit % pour que linux ne râle pas. Les \ avant les ( n'ont pas l'aire d'avoir d'influence. Mais malgrés tout cela, pas d'inversion jours/mois :(
bon, je repasse en windows. si qq'un une idée en attandant...
Renisaac
bon, je repasse en windows. si qq'un une idée en attandant...
Renisaac
renisaac
Messages postés
2043
Date d'inscription
dimanche 22 août 2004
Statut
Contributeur
Dernière intervention
15 mai 2021
138
18 mai 2005 à 18:46
18 mai 2005 à 18:46
Bon, en windows maintenant :
j'ai téléchargé la version gnu à cette page : http://users.cybercity.dk/~bse26236/batutil/help/SED.HTM#11.80
pour remplacer le tab par espace, ça a de nopuveau été sans trop de pb :
Pas de g à la fin pour ne changer que le premier tab en espace, parfais.
par contre
me recopie le fichier tel quel.
L'ordre dans lequel je fais ces opérations n'a pour moi pas d'importance. Et je peux utiliser d'autres outils. J'ai bien essayé de voir avec les formats de date dans excel ou OOo, mais j'ai pas encore réussi.
quelqu'un a-t-il une idée ou foire ma commande? comment faire d'autre?
Renisaac
j'ai téléchargé la version gnu à cette page : http://users.cybercity.dk/~bse26236/batutil/help/SED.HTM#11.80
pour remplacer le tab par espace, ça a de nopuveau été sans trop de pb :
sed s/\t/" "/ li050311.txt > li050311B.txt
Pas de g à la fin pour ne changer que le premier tab en espace, parfais.
par contre
sed s/\([0-9]+\/\)\([0-9]+\/\)\([0-9]+\)/\2\1\3/g li050311B.txt > li050311C.txt
me recopie le fichier tel quel.
L'ordre dans lequel je fais ces opérations n'a pour moi pas d'importance. Et je peux utiliser d'autres outils. J'ai bien essayé de voir avec les formats de date dans excel ou OOo, mais j'ai pas encore réussi.
quelqu'un a-t-il une idée ou foire ma commande? comment faire d'autre?
Renisaac
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
18 mai 2005 à 20:35
18 mai 2005 à 20:35
Salut,
Tiens la syntaxe est la suivante :
Allez un ch'tit exemple :
Tiens la syntaxe est la suivante :
sed 's/^\([0-9][0-9]*\/\)\([0-9][0-9]*\/\)/\2\1/'Pour ne pas être obligé de passer par un fichier temporaire, tu peux utiliser l'option "-i" de "sed".
Allez un ch'tit exemple :
[jp@Mandrake tmpfs]$ cat fichier.txt 03/11/2005 15:15:08 10.40 0.660 0.041 03/11/2005 15:15:08 10.40 0.660 0.041 03/11/2005 15:15:08 10.40 0.660 0.041 03/11/2005 15:15:08 10.40 0.660 0.041 03/11/2005 15:15:08 10.40 0.660 0.041 03/11/2005 15:15:08 10.40 0.660 0.041 [jp@Mandrake tmpfs]$ sed -i 's/^\([0-9][0-9]*\/\)\([0-9][0-9]*\/\)/\2\1/' fichier.txt [jp@Mandrake tmpfs]$ cat fichier.txt 11/03/2005 15:15:08 10.40 0.660 0.041 11/03/2005 15:15:08 10.40 0.660 0.041 11/03/2005 15:15:08 10.40 0.660 0.041 11/03/2005 15:15:08 10.40 0.660 0.041 11/03/2005 15:15:08 10.40 0.660 0.041 11/03/2005 15:15:08 10.40 0.660 0.041 [jp@Mandrake tmpfs]$;-))
Obeet
Messages postés
1766
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
17 novembre 2010
30
18 mai 2005 à 22:50
18 mai 2005 à 22:50
-i ?
Sinon apparement j'étais pas loin quand même :o)
Sinon apparement j'étais pas loin quand même :o)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
>
Obeet
Messages postés
1766
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
17 novembre 2010
18 mai 2005 à 22:59
18 mai 2005 à 22:59
Salut le TeebObeet préféré de l'autre je sais plus comment ;-)
-i[suffix], --in-place[=suffix] edit files in place (makes backup if extension supplied)Ben voui, t'étais pas loin quand même ;-))
renisaac
Messages postés
2043
Date d'inscription
dimanche 22 août 2004
Statut
Contributeur
Dernière intervention
15 mai 2021
138
18 mai 2005 à 21:20
18 mai 2005 à 21:20
GENIAL
Merci beaucoup à tous les deux. C'est pas de la hot line, mais prèsque!
bon, plus qu'a me battre avec tempo pour faire ce que j'ai envie. Rarement vu un programme aussi contre-intuitif.
Bonne soirée.
Renisaac
Merci beaucoup à tous les deux. C'est pas de la hot line, mais prèsque!
bon, plus qu'a me battre avec tempo pour faire ce que j'ai envie. Rarement vu un programme aussi contre-intuitif.
Bonne soirée.
Renisaac
Sissiman_972
Messages postés
8
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
13 août 2008
2
21 févr. 2008 à 14:21
21 févr. 2008 à 14:21
Bonjour en ce moment je suis en plein projet j'ai un fichier.txt enregistré sous mon disque (C:\text\fichier.txt) dur et je dois extraire les données de ce fichier.txt en passant par du langage c ou c++. Sachant que je dois afficher ma chaine extraite sous C++Builder_5 à partir d'un IHM (interface homme machine) que j'ai crée... Sachant que dans mon fichier.txt contient des points "." utilisé pour la séparation des données. je vous remercie d"avance tt aide seré la bienvenue!!!!!!!!!!!