Comment trier un .txt ?

Comment trier un .txt ? - Logiciels - Windows & Software

Marsh Posté le 21-04-2006 à 09:58:54    

Bonjour.
 
J'ai un fichier .txt à trier pour mon travail mais celuici fait plusieurs mo!
 
J'aimerais supprimer toutes les lignes sauf celles qui contiennent le mot "customer"
 
Je pense que ça se fait par un script vbs, ou peutetre un bat, mais je n'ai pas vraiment les compétences pour ça.
 
Si un spécialiste pouvait me donner un petit coup de pouce  :hello:  
 
Merci

Reply

Marsh Posté le 21-04-2006 à 09:58:54   

Reply

Marsh Posté le 21-04-2006 à 10:54:11    

Si tu as Excel, tu peux en faire quelque chose facilement...

Reply

Marsh Posté le 21-04-2006 à 15:12:13    

Je connais pas trop les macro sous Excel.
Pourrais-tu m'en dire plus stp ??

Reply

Marsh Posté le 21-04-2006 à 15:25:20    

Pas forcément besoin de macro. Tu as des formules qui te permettent de faire un peu de manipulation de texte.

Reply

Marsh Posté le 21-04-2006 à 15:28:17    

tu pourrais m'indiquer la marche à suivre stp ?

Reply

Marsh Posté le 21-04-2006 à 15:32:43    

Tu copies/colles ton fichier texte dans Excel. Tu devrais avoir une ligne par cellule, le tout dans la colonne A.
Dans la cellule B1, tu mets la formule :  
=TROUVE("customer";A1)
Puis tu recopies la formule dans les cellules du dessus.
 
Dans ta colonne B, toutes les cellules avec un chiffre correspondaent aors à une ligne contenant ton mot. Les autres ne l'ont pas. Il suffit de faire un tri par la colonne B, et de supprimer toutes les lignes en trop.

Reply

Marsh Posté le 21-04-2006 à 15:34:49    

Tu installes UnxUtils quelque part sur ton PC (pour avoir accès à ce formidable outil qui s'appelle grep)
- Pour l'exemple tu décompresses dans C:\Unxutils
- Toujours pour l'exemple, place ton fichier toto.txt dans C:\ (la racine de la partition C: )
Une fois installé, tu lances l'invite de commandes et te rends dans le sous-répertoire usr\local\wbin
- touche Win+R taper "cmd" et OK
A taper dans la "fenêtre DOS":

cd \ (entrée)
cd Unxutils (entrée)
cd usr\local\wbin (entrée)
cat C:\toto.txt | grep customer > C:\rienquecustomer.txt


Va vérifier via l'explorateur de fichier que C:\rienquecustomer.txt contient bien ce que tu veux, c'est terminé :D

Reply

Marsh Posté le 21-04-2006 à 15:35:31    

+1 pour grep, j'avais pensé à cygwin :)


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 21-04-2006 à 15:39:08    

Moi aussi mais je l'ai jamais installé car trop lourd et connexion quasi-permanente à un serveur Linux où il y a tout ça. Là je viens de tomber sur cette implémentation via un commentaire sur Clubic (téléchargement :o) du soft UnixDos qui est un shareware :/ et j'ai l'impression que UnxUtils roxxe sa maman (si on a pas besoin de gcc et tout le toutim bien entendu), juste grep, awk :love: et autres (mmh unique?)


Message édité par phosphoreloaded le 21-04-2006 à 15:40:11
Reply

Marsh Posté le 21-04-2006 à 15:52:22    

Citation :

connexion quasi-permantente à un serveur Linux où il y a tout ça


tu parles de cygwin :??: ?


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 21-04-2006 à 15:52:22   

Reply

Marsh Posté le 21-04-2006 à 15:57:20    

Il existe aussi MinGW/MSYS, très simple à installer.
http://sourceforge.net/forum/forum.php?forum_id=539405


Message édité par Le Ouinhin Pervers le 21-04-2006 à 15:58:08
Reply

Marsh Posté le 21-04-2006 à 16:42:48    

Merci pour vos réponses.
J'ai tenté la méthode avec UnxUtils, c'est vraiment efficace.
 
Au début j'ai cru que ça n'avait pas marché car ça a été instantané, mais en fait si, ça marche :D
 
Tres bon prog phosphoreloaded ;)
 
Ca va plus vite qu'à la main lol.
 
Capt1TaRace

Reply

Marsh Posté le 21-04-2006 à 22:32:21    

freds45 a écrit :

Citation :

connexion quasi-permantente à un serveur Linux où il y a tout ça


tu parles de cygwin :??: ?


Non en fait au boulot, j'avais un PC perso sous Windows et tout le monde avait accès au serveur qui lui était sous Linux. Ca permet d'avoir le meilleur des 2 mondes: la bureautique sous Windows et le shell et ses outils sous Linux, quitte à transférer/partager les fichiers (c'était il y a quelques années quand Office surpassait OOo :o et que VMware était pas gratos :)). Mais pour une utilisation perso occasionnelle, ce Unxutils m'a l'air drôlement chouette (j'ai entendu du bien de MinGW également :jap: )

Reply

Marsh Posté le 22-04-2006 à 00:11:57    

Pour info, apparement ya aussi moyen de faire ce que je voulais faire avec ULTRA EDIT.
 
File > Sort...
 
si ça peut en aider ;)

Reply

Marsh Posté le 22-04-2006 à 10:37:36    

Capt1TaRace a écrit :

Pour info, apparement ya aussi moyen de faire ce que je voulais faire avec ULTRA EDIT.

 

File > Sort...

 

si ça peut en aider  ;)


NotePad++ (libre et gratuit) fait du tri également :
Menu Plugin / TextFx Tools / Sort lines case sensitive (insensitive)

 

Reply

Marsh Posté le 28-05-2009 à 10:52:48    

Bonjour, j'ai un fichier texte à trier.
je cherche à trier un fichier txt structuré ainsi:  
 
      231               25                    0.000                1.826
      231               26                    0.000               29.133
                    Total :                   0.000               30.958
      278               25                    0.000                0.822
      278               26                    0.000               49.439
                          32                    0.000               0.000  
                    Total :                   0.000               50.261
 
Je dois garder le nombre "231" et mettre à la suite les résultats correspondants (Les deux nombres écrits après "total" ) séparés d'une tabulation.
Ex:  231 0.000 30.958  
      278 0.000 50.261            
 
Merci de votre aide
Je suis novice dans la programmation  

Reply

Marsh Posté le 28-05-2009 à 11:03:22    

comme precedement, je conseillerais d'utiliser Grep (pour windows  si c'est ton OS)

 

grep -E "^231" c:\monfichier.txt c:\resultat.txt

 

en considérant que le 231 est en tout début de ligne

 

par contre ca recalculera pas le total

Message cité 1 fois
Message édité par Z_cool le 28-05-2009 à 11:07:22

---------------
#mais-chut
Reply

Marsh Posté le 28-05-2009 à 14:13:57    

Z_cool a écrit :

comme precedement, je conseillerais d'utiliser Grep (pour windows  si c'est ton OS)
 
grep -E "^231" c:\monfichier.txt c:\resultat.txt
 
en considérant que le 231 est en tout début de ligne
 
par contre ca recalculera pas le total


En complément à ta réponse:  
En prenant awk et grep for windows, on peut les combiner pour n'obtenir que un espace  entre les nombres, permettant d'obtenir le résultat comme il l'a écrit  
more ton_fichier|grep "^231"|awk -F" " {print$1,$3,$4} > le_fichier_résultat
 
le more affiche le fichier, puis les 2 pipes (|) filtrent. Le grep pour les lignes ou le 231 est contenu, le awk pour supprimer les tabulations/espaces trop grands et ramener à un espace unique. Le ">" redirige  le résultat dans un fichier de ton choix

Message cité 1 fois
Message édité par booster le 28-05-2009 à 14:26:55

---------------
Booster, the only one (thanks God...)
Reply

Marsh Posté le 28-05-2009 à 15:07:43    

Juste comme ça sous Windows on a un outil qui s'appelle cmd   [:chris barnes]  , pas besoin d'installer des soft unix à tout bou de champ:

Code :
  1. for /f %i in ('find "customer" toto.txt') do @echo %i >> rienquecustomer.txt

Reply

Marsh Posté le 28-05-2009 à 15:15:35    

ngkreator a écrit :

Juste comme ça sous Windows on a un outil qui s'appelle cmd   [:chris barnes]  , pas besoin d'installer des soft unix à tout bou de champ:

Code :
  1. for /f %i in ('find "customer" toto.txt') do @echo %i >> rienquecustomer.txt



Citation :

Posté le 21-04-2006 à 09:58:54

:)


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 28-05-2009 à 15:25:47    

C'est pas moi qui ai relancé le sujet [:cosmoschtroumpf]

Reply

Marsh Posté le 28-05-2009 à 15:34:53    

Oui, mais tu ne réponds pas à la question la plus récente :whistle:


Message édité par freds45 le 28-05-2009 à 15:35:01

---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 28-05-2009 à 15:37:29    

Ah oui. Pour la 2ème question j'avoue que cmd est limité, il faudrait faire un batch avec des boucles. Faut pas trop lui en demander.

Reply

Marsh Posté le 12-06-2009 à 14:54:02    

booster a écrit :


En complément à ta réponse:
En prenant awk et grep for windows, on peut les combiner pour n'obtenir que un espace  entre les nombres, permettant d'obtenir le résultat comme il l'a écrit
more ton_fichier|grep "^231"|awk -F" " {print$1,$3,$4} > le_fichier_résultat

 

le more affiche le fichier, puis les 2 pipes (|) filtrent. Le grep pour les lignes ou le 231 est contenu, le awk pour supprimer les tabulations/espaces trop grands et ramener à un espace unique. Le ">" redirige  le résultat dans un fichier de ton choix

 


Tu peux retirer le more
grep "^231" ton_fichier|awk -F" " {print$1,$3,$4} > le_fichier_résultat

 

mais bon, c'est du fignolage   :jap:

  
ngkreator a écrit :

Juste comme ça sous Windows on a un outil qui s'appelle cmd   [:chris barnes]  , pas besoin d'installer des soft unix à tout bou de champ:

Code :
  1. for /f %i in ('find "customer" toto.txt') do @echo %i >> rienquecustomer.txt


 


grep a plus de possibilité de possibilité sur les expression reguliere il me semble

 

et perso, je les ai comparé niveau vitesse, grep a fini de travailler que find a pas passer la moitié (sur des fichiers de LOG en Txt de 2Go)

Message cité 1 fois
Message édité par Z_cool le 12-06-2009 à 14:54:34

---------------
#mais-chut
Reply

Marsh Posté le 12-06-2009 à 15:47:32    

Z_cool a écrit :

et perso, je les ai comparé niveau vitesse, grep a fini de travailler que find a pas passer la moitié (sur des fichiers de LOG en Txt de 2Go)

 

Des logs de 2 go n'ont pas été généré de manière personnelle, donc je pense que le soft qui génère ça doit avoir sa communauté qui a déjà travaillé sur des progs d'analyse de log (pour ne pas citer Squid que j'ai comme exemple en tête). Sinon c'est dommage... Mais intéressant à mettre en place !


Message édité par Latrinite le 12-06-2009 à 15:47:53
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed