Page 1 sur 1

[R] Filtrer un fichier

Posté : sam. 04 juil. 2015 22:57
par jcaspar
B :D onjour à tous !

Je souhaiterais lire le contenu d'un fichier et supprimer les données qui ne m'intéressent pas
et créer un nouveau fichier qui ne comprennent que les données que je souhaite.

Pouvez vous svp m'expliquer comment procéder pour filtrer le contenu du fichier en l’occurrence
ce fichier comprend tous les liens d'un site web. Je souhaiterais uniquement conserver les liens comprenant le mot réunion.

Je vous remercie pour vos conseils

Jean-Marc

Re: [..] Filtrer un fichier

Posté : dim. 05 juil. 2015 00:52
par TopXm
Bonsoir,

Il y a sans aucun doute plus rapide, mais dans le principe ceci devrait fonctionner :
  • Lecture fichier en entrée Ligne à ligne
  • Si la recherche aboutit alors on écrit la ligne dans le fichier en sortie

Code : Tout sélectionner

If Not FileExists('MyFileIn.txt') Then
    MsgBox(16, 'Recherche réunion', 'Fichier input Inexistant')
    Exit
EndIf

Local $hFileIn = FileOpen('MyFileIn.txt')
Local $hFileOut = FileOpen('MyFileOut.txt', 2)
Local $Buff = ''

While 1
    $Buff = FileReadLine($hFileIn)
    If @error Then ExitLoop
    If StringInStr($Buff, 'réunion') > 0 Then FileWriteLine($hFileOut, $Buff)
WEnd
FileClose($hFileOut)
FileClose($hFileIn)
ShellExecute('MyFileOut.txt')
Exit
 

Re: [..] Filtrer un fichier

Posté : dim. 05 juil. 2015 01:50
par orax
J'étais parti sur autre chose avec StringRegExp.

Code : Tout sélectionner

#include <File.au3>
#include <StringConstants.au3>
$sFile = FileRead('test.txt')
$a = StringRegExp($sFile, '.*réunion.*', $STR_REGEXPARRAYGLOBALMATCH)
_FileWriteFromArray('test2.txt', $a)
Alternative avec StringRegExpReplace. Toutes les lignes où "réunion" n'est pas trouvé sont supprimées.

Code : Tout sélectionner

$sFile = FileRead('test.txt')
$sFile2 = StringRegExpReplace($sFile, '(?im)^(?!.*réunion).*(?:\R|$)', '')
FileWrite('test2.txt', $sFile2)
https://regex101.com/r/lX1fA7