Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3391 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  [Résolu2x]Comment supprimer toute une ligne contenant mot spécifique ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu2x]Comment supprimer toute une ligne contenant mot spécifique ?

n°2232763
elojar
Posté le 24-11-2005 à 08:54:05  profilanswer
 

Bonjour,
je suis au boulot et j'ai un travail asez récurent à faire. J'ai un fichier .txt et je dois le trier. A noter que certaines lignes, que je dois supprimer, apparaissent souvent. Je souhaiterais supprimer une ligne entière contenant un mot spéficique (quelque soit ce qu'il y a avant et apres sur la meme ligne)
 
J'ai regardé dans Word et StarOffice8 mais je n'ai rien trouvé, ni sur google d'ailleurs.
 
Quelqu'un aurait une idée de comment faire la manip ?
 
Merci !


Message édité par elojar le 24-11-2005 à 09:38:33
mood
Publicité
Posté le 24-11-2005 à 08:54:05  profilanswer
 

n°2232783
olivthill
Posté le 24-11-2005 à 09:20:30  profilanswer
 

:hello:  
Voici un petit script qui fait cela :

Code :
  1. ' Supprime toutes les lignes qui contiennent un mot clef
  2. Const ForReading = 1, ForWriting = 2, ForAppending = 8
  3. Dim fso, f_in, f_out
  4. mot_clef = "titi"
  5. Set fso = CreateObject("Scripting.FileSystemObject" )
  6. Set f_in = fso.OpenTextFile("toto.txt", ForReading)
  7. Set f_out = fso.OpenTextFile("toto_tmp.txt", ForWriting, true)
  8. Do Until f_in.AtEndOfStream
  9.    une_ligne = f_in.ReadLine
  10.    token_pos = Instr(une_ligne, mot_clef)
  11.    If (token_pos = 0) Then
  12.       ' Recopie la ligne si elle ne contient pas le mot clef
  13.       f_out.WriteLine une_ligne
  14.    End If
  15. Loop
  16. f_in.Close
  17. f_out.Close
  18. ' Remplace toto.txt par le nouveau fichier toto_tmp_.txt
  19. fso.DeleteFile "toto.txt", true
  20. fso.MoveFile "toto_tmp.txt", "toto.txt"

- Copier ces lignes dans un fichier que l'on nommera par exemple delline.vbs.
- Changer le contenu du mot_clef et le nom du fichier.
- Lancer ce script en cliquant dessus à partir de Windows Explorer, ou bien, dans une fenêtre de commande en tappant cscript.exe delline.vbs.  :)

n°2232796
olivthill
Posté le 24-11-2005 à 09:30:21  profilanswer
 

En fait, il y a une manip plus simple :

Code :
  1. FIND /V titi toto.txt >new_toto.txt


ou bien sous Unix

Code :
  1. grep -v titi toto.txt >new_toto.txt

n°2232805
elojar
Posté le 24-11-2005 à 09:37:47  profilanswer
 

Ouch ca fait mal !
J'ai fais le script ca marche tres bien. Pour la 2e manip j'ai pas essayé j'ai pas trop compris comment il fallait faire mais la 1ere me plait tres bien ^^
 
Merci chef !

n°2232817
elojar
Posté le 24-11-2005 à 09:50:52  profilanswer
 

C'est encore moi ^^
Etant donné que tu as l'air assez bon en la matière en testant un peu je me rend compte que je pourrais améliorer le système pour encore plus d'automatisation.
 
Imagine que j'ai plusieurs .txt dans le meme dossier. Je voudrais que la modification précédente s'effectue pour tous les .txt en meme temps, c'est possible ?
Et deuxièment, imagine que je veuilles faire cette manip pour plusieurs chaines de caractères différentes. Est-ce possible de faire tout dans un seul script ou dois-je executer un script différent à chaque fois ?
 
Je suis difficile je sais mais bon si je peux gagner encore un peu de temps et moins m'abimer les yeux sur l'écran je suis pas contre ;)
 
En tout cas merci pour l'aide !

n°2234776
elojar
Posté le 25-11-2005 à 19:14:36  profilanswer
 

T'es plus là mon ami olivthill ? ^^
Tu me dira c'est le week-end ca presse pas mais si j'avais la soluce pour lundi ce serait impec  :bounce:

n°2237380
olivthill
Posté le 27-11-2005 à 22:56:48  profilanswer
 

Excuses-moi, je m'étais caché parce que je préfère éviter de donner des programmes que je n'ai pas testés, et je n'avais tellement le temps de le faire.
 
Mais, maintenant, c'est bon, voici un nouveau script qui traite tous les fichiers ."txt" du répertoire courant. Pour chaque fichier, les lignes sont supprimées quand elles contiennent au moins l'un des trois mots clef "toto", "titi", "tutu". S'il y a d'autres mots à filtrer, il faut dupliquer la ligne 25.

Code :
  1. ' Boucle sur tous le fichiers ".txt" du répertoire courant
  2. ' et supprime toutes les lignes qui contiennent un mot clef
  3. Const ForReading = 1, ForWriting = 2, ForAppending = 8
  4. Dim fso, f, fc, f_in, f_out
  5. Set fso = CreateObject("Scripting.FileSystemObject" )
  6. Set f = fso.GetFolder("." )
  7. Set fc = f.Files
  8. For Each f1 in fc
  9.    If (fso.GetExtensionName(f1) = "txt" ) Then
  10.       old_fic_nom = f1.name
  11.       new_fic_nom = fso.GetBaseName(f1) & ".txt_tmp"
  12.       Set f_in = fso.OpenTextFile(old_fic_nom, ForReading)
  13.       Set f_out = fso.OpenTextFile(new_fic_nom, ForWriting, true)
  14.       Do Until f_in.AtEndOfStream
  15.          une_ligne = f_in.ReadLine
  16.          If (Instr(une_ligne, "toto" ) = 0 _
  17.              and InStr(une_ligne, "titi" ) = 0 _
  18.              and InStr(une_ligne, "tutu" ) = 0) Then
  19.             ' Recopie la ligne si elle ne contient pas les mots clefs
  20.            f_out.WriteLine une_ligne
  21.          End If
  22.       Loop
  23.       f_in.Close
  24.       f_out.Close
  25.      
  26.       ' Remplace l'ancien fichier par le nouveau
  27.       fso.DeleteFile old_fic_nom, true
  28.       fso.MoveFile new_fic_nom, old_fic_nom
  29.    End If
  30. Next


Message édité par olivthill le 27-11-2005 à 23:02:25
n°2238567
elojar
Posté le 28-11-2005 à 22:25:19  profilanswer
 

Merci beaucoup olivthill tu peux pas savoir comment ca va me rendre service ;)  :jap:  :jap:  :jap:

n°2773403
akwell
Posté le 16-04-2008 à 00:55:47  profilanswer
 

hello,
 
je sais que je remonte un vieux topic
 
mais je cherche l'inverse,
je souhaite garder uniquement les lignes qui gardent un mot clé
 
merci

n°2773416
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 16-04-2008 à 06:33:06  profilanswer
 

olivthill a écrit : a écrit :

 
ou bien sous Unix



 
µIl existe un GREP sous windows.
 
perso; je l'utilise tout les jours


---------------
#mais-chut    ᓚᘏᗢ
mood
Publicité
Posté le 16-04-2008 à 06:33:06  profilanswer
 

n°2773417
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 16-04-2008 à 06:34:52  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  [Résolu2x]Comment supprimer toute une ligne contenant mot spécifique ?

 

Sujets relatifs
c'est quoi ce truc ou comment le supprimer ??Restauration WIN XP en ligne de commande ?
partition supprimercomment supprimer complètement BitDefender ?
connextion a partir autre ligneconnextion a partir autre ligne
probleme de capacité pour ma ligne chez freesupprimer les licence wma
supprimer les licences wmaDeux FAI sur la même ligne de telephone
Plus de sujets relatifs à : [Résolu2x]Comment supprimer toute une ligne contenant mot spécifique ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)