J’ai un très gros fichier .txt
Je souhaite supprimer les lignes qui sont en double dans le fichier.
Alors je recherche un script vbs pouvant le faire.
Si quelqu’un a une suggestion.
Merci d’avance.
J'ai un très gros fichier .txt Je souhaite supprimer les lignes qui sont en double dans le fichier. Alors je recherche un script vbs pouvant le faire. Si quelqu'un a une suggestion. Merci d'avance.
Bonsoir,
Pour supprimer des lignes dans un fichier texte, il faut, en gros, recopier ce fichier ligne par ligne, en testant chaque ligne, et en ne recopiant que celles que tu désires conserver. En effet, en vbs tu ne peux pas intervenir au milieu du flux d'un fichier texte. Tu peux trouver des infos dans cette discussion de mars, traitant grosso-modo du même sujet. Dans mon exemple, on recopie un fichier texte en modifiant certaines lignes. Il faut juste changer un peu, en ne recopiant tout simplement pas les lignes que tu ne veux plus. http://groups.google.fr/group/microsoft.public.fr.scripting/browse_frm/thread/939c2aed66da6e26/054e73e49eedee93?tvc=1&q=group%3Amicrosoft.public.fr.scripting&hl=fr#054e73e49eedee93
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
In news:mn.544b7d66a3692f8b.38434@mail.fr,
Trust <invalidMail@mail.fr> typed:
J'ai un très gros fichier .txt
Je souhaite supprimer les lignes qui sont en double dans le fichier.
Alors je recherche un script vbs pouvant le faire.
Si quelqu'un a une suggestion.
Merci d'avance.
Bonsoir,
Pour supprimer des lignes dans un fichier texte, il faut, en gros, recopier
ce fichier ligne par ligne, en testant chaque ligne, et en ne recopiant que
celles que tu désires conserver. En effet, en vbs tu ne peux pas intervenir
au milieu du flux d'un fichier texte.
Tu peux trouver des infos dans cette discussion de mars, traitant
grosso-modo du même sujet. Dans mon exemple, on recopie un fichier texte en
modifiant certaines lignes. Il faut juste changer un peu, en ne recopiant
tout simplement pas les lignes que tu ne veux plus.
http://groups.google.fr/group/microsoft.public.fr.scripting/browse_frm/thread/939c2aed66da6e26/054e73e49eedee93?tvc=1&q=group%3Amicrosoft.public.fr.scripting&hl=fr#054e73e49eedee93
J'ai un très gros fichier .txt Je souhaite supprimer les lignes qui sont en double dans le fichier. Alors je recherche un script vbs pouvant le faire. Si quelqu'un a une suggestion. Merci d'avance.
Bonsoir,
Pour supprimer des lignes dans un fichier texte, il faut, en gros, recopier ce fichier ligne par ligne, en testant chaque ligne, et en ne recopiant que celles que tu désires conserver. En effet, en vbs tu ne peux pas intervenir au milieu du flux d'un fichier texte. Tu peux trouver des infos dans cette discussion de mars, traitant grosso-modo du même sujet. Dans mon exemple, on recopie un fichier texte en modifiant certaines lignes. Il faut juste changer un peu, en ne recopiant tout simplement pas les lignes que tu ne veux plus. http://groups.google.fr/group/microsoft.public.fr.scripting/browse_frm/thread/939c2aed66da6e26/054e73e49eedee93?tvc=1&q=group%3Amicrosoft.public.fr.scripting&hl=fr#054e73e49eedee93
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
Jacques Barathon [MS]
"Trust" wrote in message news:
Bonjour,
J'ai un très gros fichier .txt Je souhaite supprimer les lignes qui sont en double dans le fichier. Alors je recherche un script vbs pouvant le faire. Si quelqu'un a une suggestion. Merci d'avance.
Tu peux le faire très simplement en PowerShell. Imaginons fichier.txt avec le contenu suivant:
--- début de fichier --- ligne unique #1 ligne unique #2 ligne en double #1 ligne unique #3 ligne en double #1 ligne unique #4 --- fin de fichier ---
La commande suivante va sélectionner les lignes non redondantes:
PS> type fichier.txt | select -unique ligne unique #1 ligne unique #2 ligne en double #1 ligne unique #3 ligne unique #4
Tu n'as plus qu'à rediriger le résultat dans un autre fichier:
PS> type fichier.txt | select -unique > fichier2.txt
Jacques
"Trust" <invalidMail@mail.fr> wrote in message
news:mn.544b7d66a3692f8b.38434@mail.fr...
Bonjour,
J'ai un très gros fichier .txt
Je souhaite supprimer les lignes qui sont en double dans le fichier.
Alors je recherche un script vbs pouvant le faire.
Si quelqu'un a une suggestion.
Merci d'avance.
Tu peux le faire très simplement en PowerShell. Imaginons fichier.txt avec
le contenu suivant:
--- début de fichier ---
ligne unique #1
ligne unique #2
ligne en double #1
ligne unique #3
ligne en double #1
ligne unique #4
--- fin de fichier ---
La commande suivante va sélectionner les lignes non redondantes:
PS> type fichier.txt | select -unique
ligne unique #1
ligne unique #2
ligne en double #1
ligne unique #3
ligne unique #4
Tu n'as plus qu'à rediriger le résultat dans un autre fichier:
PS> type fichier.txt | select -unique > fichier2.txt
J'ai un très gros fichier .txt Je souhaite supprimer les lignes qui sont en double dans le fichier. Alors je recherche un script vbs pouvant le faire. Si quelqu'un a une suggestion. Merci d'avance.
Tu peux le faire très simplement en PowerShell. Imaginons fichier.txt avec le contenu suivant:
--- début de fichier --- ligne unique #1 ligne unique #2 ligne en double #1 ligne unique #3 ligne en double #1 ligne unique #4 --- fin de fichier ---
La commande suivante va sélectionner les lignes non redondantes:
PS> type fichier.txt | select -unique ligne unique #1 ligne unique #2 ligne en double #1 ligne unique #3 ligne unique #4
Tu n'as plus qu'à rediriger le résultat dans un autre fichier:
PS> type fichier.txt | select -unique > fichier2.txt
Jacques
Trust
"Trust" wrote in message news:
Bonjour,
J'ai un très gros fichier .txt Je souhaite supprimer les lignes qui sont en double dans le fichier. Alors je recherche un script vbs pouvant le faire. Si quelqu'un a une suggestion. Merci d'avance.
Tu peux le faire très simplement en PowerShell. Imaginons fichier.txt avec le contenu suivant:
--- début de fichier --- ligne unique #1 ligne unique #2 ligne en double #1 ligne unique #3 ligne en double #1 ligne unique #4 --- fin de fichier ---
La commande suivante va sélectionner les lignes non redondantes:
PS> type fichier.txt | select -unique ligne unique #1 ligne unique #2 ligne en double #1 ligne unique #3 ligne unique #4
Tu n'as plus qu'à rediriger le résultat dans un autre fichier:
PS> type fichier.txt | select -unique > fichier2.txt
Jacques
Le vbs que tu proposes n’est pas mal. Ça suppose une connaissance en amont de la ligne (en double) à supprimer. C’est cette partie du code que je n’arrive pas à mettre en place en vbs. Je voudrais que tout ça soit automatique. Il lit le fichier et supprime les lignes en double. Ça ne dérange pas de passer par des fichiers temporaires.
Merci d’avance
"Trust" <invalidMail@mail.fr> wrote in message
news:mn.544b7d66a3692f8b.38434@mail.fr...
Bonjour,
J'ai un très gros fichier .txt
Je souhaite supprimer les lignes qui sont en double dans le fichier.
Alors je recherche un script vbs pouvant le faire.
Si quelqu'un a une suggestion.
Merci d'avance.
Tu peux le faire très simplement en PowerShell. Imaginons fichier.txt avec le
contenu suivant:
--- début de fichier ---
ligne unique #1
ligne unique #2
ligne en double #1
ligne unique #3
ligne en double #1
ligne unique #4
--- fin de fichier ---
La commande suivante va sélectionner les lignes non redondantes:
PS> type fichier.txt | select -unique
ligne unique #1
ligne unique #2
ligne en double #1
ligne unique #3
ligne unique #4
Tu n'as plus qu'à rediriger le résultat dans un autre fichier:
PS> type fichier.txt | select -unique > fichier2.txt
Jacques
Le vbs que tu proposes n’est pas mal.
Ça suppose une connaissance en amont de la ligne (en double) à
supprimer.
C’est cette partie du code que je n’arrive pas à mettre en place en
vbs.
Je voudrais que tout ça soit automatique.
Il lit le fichier et supprime les lignes en double.
Ça ne dérange pas de passer par des fichiers temporaires.
J'ai un très gros fichier .txt Je souhaite supprimer les lignes qui sont en double dans le fichier. Alors je recherche un script vbs pouvant le faire. Si quelqu'un a une suggestion. Merci d'avance.
Tu peux le faire très simplement en PowerShell. Imaginons fichier.txt avec le contenu suivant:
--- début de fichier --- ligne unique #1 ligne unique #2 ligne en double #1 ligne unique #3 ligne en double #1 ligne unique #4 --- fin de fichier ---
La commande suivante va sélectionner les lignes non redondantes:
PS> type fichier.txt | select -unique ligne unique #1 ligne unique #2 ligne en double #1 ligne unique #3 ligne unique #4
Tu n'as plus qu'à rediriger le résultat dans un autre fichier:
PS> type fichier.txt | select -unique > fichier2.txt
Jacques
Le vbs que tu proposes n’est pas mal. Ça suppose une connaissance en amont de la ligne (en double) à supprimer. C’est cette partie du code que je n’arrive pas à mettre en place en vbs. Je voudrais que tout ça soit automatique. Il lit le fichier et supprime les lignes en double. Ça ne dérange pas de passer par des fichiers temporaires.
Merci d’avance
bayosky
Notre ami Trust tapota :
Le vbs que tu proposes n’est pas mal. Ça suppose une connaissance en amont de la ligne (en double) à supprimer.
salut,
Il me semble que tu n'as pas compris :
1. que ce qui a été proposé n'est pas du vbs 2. que ce qui est proposé ne suppose pas que l'on sait à l'avance où seront les doublons.
En revanche ta question est trop vague... car un point important n'y est pas précisé :
Les lignes identiques sont elles forcément groupées...
Si oui c'est assez facile :
a. Tu lis tout le fichier et tu sépares les lignes ( voir fonction split) b. Tu balayes la liste obtenue et tu remplis une nouvelle liste à mesure avec un test pour ne pas y ajouter plusieurs fois la même chose c. tu recompactes l'ensemble et tu sauves...
sinon
a. identique b. il va falloir trier la liste et ainsi les doublons se suivront. c. et d. balayage etc ... comme au dessus...
On pourait virer les doublons en retrouvant l'ordre initial ( en fixant pour les doublons le rang au premier rencontré ...) mais c'est plus délicat : il faut ajouter un tableau d'index que l'on brasse en parallèle durant la phase de tri ainsi, ensuite, on connait la position initiale de chaque élément ...
Tu trouveras de nombreux exemples des fonctions de bases en VBS pour l'accès aux fichiers ( et sur split ) chez notre grand gourou jcb ...
c'est en faisant que l'on apprend :o)
bon courage donc ...
HB
Notre ami Trust tapota :
Le vbs que tu proposes n’est pas mal.
Ça suppose une connaissance en amont de la ligne (en double) à
supprimer.
salut,
Il me semble que tu n'as pas compris :
1. que ce qui a été proposé n'est pas du vbs
2. que ce qui est proposé ne suppose pas que l'on sait à l'avance où
seront les doublons.
En revanche ta question est trop vague...
car un point important n'y est pas précisé :
Les lignes identiques sont elles forcément groupées...
Si oui c'est assez facile :
a. Tu lis tout le fichier et tu sépares les lignes ( voir fonction
split)
b. Tu balayes la liste obtenue et tu remplis une nouvelle liste à
mesure
avec un test pour ne pas y ajouter plusieurs fois la même chose
c. tu recompactes l'ensemble et tu sauves...
sinon
a. identique
b. il va falloir trier la liste
et ainsi les doublons se suivront.
c. et d. balayage etc ... comme au dessus...
On pourait virer les doublons en retrouvant l'ordre initial
( en fixant pour les doublons le rang au premier rencontré ...)
mais c'est plus délicat :
il faut ajouter un tableau d'index que l'on brasse en parallèle durant
la phase de tri
ainsi, ensuite, on connait la position initiale de chaque élément ...
Tu trouveras de nombreux exemples des fonctions de bases en VBS pour
l'accès aux fichiers
( et sur split ) chez notre grand gourou jcb ...
Le vbs que tu proposes n’est pas mal. Ça suppose une connaissance en amont de la ligne (en double) à supprimer.
salut,
Il me semble que tu n'as pas compris :
1. que ce qui a été proposé n'est pas du vbs 2. que ce qui est proposé ne suppose pas que l'on sait à l'avance où seront les doublons.
En revanche ta question est trop vague... car un point important n'y est pas précisé :
Les lignes identiques sont elles forcément groupées...
Si oui c'est assez facile :
a. Tu lis tout le fichier et tu sépares les lignes ( voir fonction split) b. Tu balayes la liste obtenue et tu remplis une nouvelle liste à mesure avec un test pour ne pas y ajouter plusieurs fois la même chose c. tu recompactes l'ensemble et tu sauves...
sinon
a. identique b. il va falloir trier la liste et ainsi les doublons se suivront. c. et d. balayage etc ... comme au dessus...
On pourait virer les doublons en retrouvant l'ordre initial ( en fixant pour les doublons le rang au premier rencontré ...) mais c'est plus délicat : il faut ajouter un tableau d'index que l'on brasse en parallèle durant la phase de tri ainsi, ensuite, on connait la position initiale de chaque élément ...
Tu trouveras de nombreux exemples des fonctions de bases en VBS pour l'accès aux fichiers ( et sur split ) chez notre grand gourou jcb ...
c'est en faisant que l'on apprend :o)
bon courage donc ...
HB
Jacques Barathon [MS]
"Trust" wrote in message news: <snip>
Le vbs que tu proposes n'est pas mal.
Ce n'est pas du vbs, c'est du PowerShell. PowerShell est téléchargeable ici (version RC1): http://www.microsoft.com/downloads/details.aspx?FamilyId+0BBFCD-0797-4083-A817-5E6A054A85C9&displaylang=en
Ça suppose une connaissance en amont de la ligne (en double) à supprimer.
Pas du tout. La seule ligne à taper est:
type fichier.txt | select -unique > fichier2.txt
La commande "select -unique" récupère le contenu du fichier "fichier.txt" et sélectionne toutes les lignes uniques (non redondantes).
Pour le faire en vbs, c'est un peu plus compliqué. Déjà, les lignes redondantes sont-elles toujours contigues ou peuvent-elles être dispersées dans le fichier? Si elles sont toujours contigues, on peut imaginer une solution qui consisterait à comparer les lignes deux à deux et à ne recopier une ligne dans le 2e fichier que si elle n'est pas identique à la précédente. Je n'ai pas le temps (ni le courage pour être honnête) de m'y mettre ce soir, mais c'est une piste...
Jacques
"Trust" <invalidMail@mail.fr> wrote in message
news:mn.55957d6621b743b0.38434@mail.fr...
<snip>
Le vbs que tu proposes n'est pas mal.
Ce n'est pas du vbs, c'est du PowerShell. PowerShell est téléchargeable ici
(version RC1):
http://www.microsoft.com/downloads/details.aspx?FamilyId+0BBFCD-0797-4083-A817-5E6A054A85C9&displaylang=en
Ça suppose une connaissance en amont de la ligne (en double) à supprimer.
Pas du tout. La seule ligne à taper est:
type fichier.txt | select -unique > fichier2.txt
La commande "select -unique" récupère le contenu du fichier "fichier.txt" et
sélectionne toutes les lignes uniques (non redondantes).
Pour le faire en vbs, c'est un peu plus compliqué. Déjà, les lignes
redondantes sont-elles toujours contigues ou peuvent-elles être dispersées
dans le fichier? Si elles sont toujours contigues, on peut imaginer une
solution qui consisterait à comparer les lignes deux à deux et à ne recopier
une ligne dans le 2e fichier que si elle n'est pas identique à la
précédente. Je n'ai pas le temps (ni le courage pour être honnête) de m'y
mettre ce soir, mais c'est une piste...
Ce n'est pas du vbs, c'est du PowerShell. PowerShell est téléchargeable ici (version RC1): http://www.microsoft.com/downloads/details.aspx?FamilyId+0BBFCD-0797-4083-A817-5E6A054A85C9&displaylang=en
Ça suppose une connaissance en amont de la ligne (en double) à supprimer.
Pas du tout. La seule ligne à taper est:
type fichier.txt | select -unique > fichier2.txt
La commande "select -unique" récupère le contenu du fichier "fichier.txt" et sélectionne toutes les lignes uniques (non redondantes).
Pour le faire en vbs, c'est un peu plus compliqué. Déjà, les lignes redondantes sont-elles toujours contigues ou peuvent-elles être dispersées dans le fichier? Si elles sont toujours contigues, on peut imaginer une solution qui consisterait à comparer les lignes deux à deux et à ne recopier une ligne dans le 2e fichier que si elle n'est pas identique à la précédente. Je n'ai pas le temps (ni le courage pour être honnête) de m'y mettre ce soir, mais c'est une piste...
Jacques
Jean
Pour le faire en vbs, c'est un peu plus compliqué.
Je dirais même plus : *beaucoup* plus compliqué.
Le traitement du système de fichier par PowerShell est une petite merveille du genre pour qui veut s'y arrêter.
Je suis un peu déçu de ne pas avoir vu Michel, avec quelques find.exe, findstr.exe,... faire renaître le batch de ses cendres tel le phénix :O) Je reste sur ma faim :O)
Amicalement,
-- Jean - JMST Belgium
Pour le faire en vbs, c'est un peu plus compliqué.
Je dirais même plus : *beaucoup* plus compliqué.
Le traitement du système de fichier par PowerShell est une petite
merveille du genre pour qui veut s'y arrêter.
Je suis un peu déçu de ne pas avoir vu Michel, avec quelques find.exe,
findstr.exe,... faire renaître le batch de ses cendres tel le phénix
:O)
Je reste sur ma faim :O)
Pour le faire en vbs, c'est un peu plus compliqué.
Je dirais même plus : *beaucoup* plus compliqué.
Le traitement du système de fichier par PowerShell est une petite merveille du genre pour qui veut s'y arrêter.
Je suis un peu déçu de ne pas avoir vu Michel, avec quelques find.exe, findstr.exe,... faire renaître le batch de ses cendres tel le phénix :O) Je reste sur ma faim :O)
Une version plus verbeuse, peut-être plus explicite :
.pyt #passage en mode Python l=lload('source.txt') #chargement d'un fichier dans une liste s=Set(l) #conversion d'une liste en 'Set' lwrite('dest.txt',s) #écriture liste (ou Set) dans un fichier quit #OK, on sort
Et une version plus courte : .pyt lwrite('dest.txt',Set(lload('source.txt'))) quit
Une version plus verbeuse, peut-être plus explicite :
.pyt #passage en mode Python
l=lload('source.txt') #chargement d'un fichier dans une liste
s=Set(l) #conversion d'une liste en 'Set'
lwrite('dest.txt',s) #écriture liste (ou Set) dans un fichier
quit #OK, on sort
Et une version plus courte :
.pyt
lwrite('dest.txt',Set(lload('source.txt')))
quit
Une version plus verbeuse, peut-être plus explicite :
.pyt #passage en mode Python l=lload('source.txt') #chargement d'un fichier dans une liste s=Set(l) #conversion d'une liste en 'Set' lwrite('dest.txt',s) #écriture liste (ou Set) dans un fichier quit #OK, on sort
Et une version plus courte : .pyt lwrite('dest.txt',Set(lload('source.txt'))) quit
;o) et @+
-- @-salutations
Michel Claveau
Michel Claveau
Re !
Dans le même genre, voici un script qui va trouver les lignes que l'on trouve identiques, dans deux fichiers textes différents :