Question Extraire des données entre des marqueurs à partir de plusieurs fichiers

Plus d'informations
il y a 4 ans 9 mois #31246 par Jonathan
Bonjour,

J'annonce, je suis un grand débutant en powershell.
Est-il possible comme le sujet l'indique d'extraire des données (en sortie dans plusieurs fichiers) à partir de plusieurs fichiers positionnés dans un répertoire, ces données sont comprises entre des valeurs "[1" et "P]]".
Exemple de fichier :

Fichier 1 :
[1[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD]P]]
[1[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD][AAADDD][AAADDD]P]]

Fichier 2 (avec une variante, oui le "[1" n'est pas forcément en début de ligne: 
[1[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD]P]]
[AAADDD]P]]                                                                                                                 [1[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD][AAADDD][AAADDD]P]]

Je reste dans le coin pour peut être repréciser ma demande si besoin.
Merci pour vos aides.

Jonathan.
 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 4 ans 9 mois #31247 par Jonathan
J'arrive à faire cela mais je suis loin du compte :/...

récupérer dans la variable $OUT le contenu des fichiers *.OUT dans :\TEMP\XXX\IN\
$OUT = Get-Content "c:\TEMP\XXX\IN\*.out"

récupère le contenu de tout les fichiers c:\TEMP\XXX\IN\*.out dans le fichier c:\TEMP\XXX\toto2.txt
Get-Content "c:\TEMP\XXX\IN\*.out" | Out-file c:\TEMP\XXX\toto2.txt

sélectionne toutes les lignes avec "{1" et sortie fichier "toto.txt"
Select-String -Path "C:\temp\XXX\IN\*.out" -Pattern "{1" -Context 0 | Out-file c:\TEMP\XXX\toto.txt

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 4 ans 9 mois #31252 par xyz
Salut,
une piste à tester :
#Combinaison des exemples d'origine
$Texte=@'
[1[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD]P]]
[1[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD][AAADDD][AAADDD]P]]
[1[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD]P]]
[AAADDD]P]]                                                                                                                 [1[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD][AAADDD][AAADDD]P]]
'@
 

#Texte de test
$Texte=@'
[1 UN [XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD]P]]
[1 DEUX [XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD][AAADDD][AAADDD]P]]
[1 TROIS [XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD]P]]
[AAADDD]P]]                                                                                                                 [1 QUATRE [XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[XXXXXX][AAADDD]
[AAADDD][AAADDD][AAADDD]P]]
'@
 
#https://docs.microsoft.com/fr-fr/dotnet/standard/base-types/regular-expression-options
#$regex=[Regex]::new('(?<=\[1).*?(?=P]])','SingleLine')

$DebutDeReconnaissance='\[1'
$FinDeReconnaissance='P]]'

#${ }  --> limite précisément le nom de variable Powershell.
$regex="(?s)(?<=${DebutDeReconnaissance}).*?(?=${FinDeReconnaissance})"
#$Regex='(?s)(?<=\[1).*?(?=P]])'

#Notes:
#
#Option de regex :  singleline
#(?s)

#Capture tous les caractères entre les deux textes de reconnaissance, et on capture le moins de caractère possible.
#.*?

#Assertions de préanalyse ( ce qui précède le texte recherché)
#https://docs.microsoft.com/fr-fr/dotnet/standard/base-types/backtracking-in-regular-expressions#lookahead-assertions
#(?<= )

#Assertions de postanalyse ( ce qui suit le texte recherché)
#(?= )'


Select-String $regex -input $Texte -AllMatches |
    ForEach-Object {$_.matches}
 

$Result=Select-String $regex -input $Texte -AllMatches |
            ForEach-Object {$_.matches.Value}

$Result.Count
#4

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 jours 5 heures - il y a 2 jours 5 heures #132402 par MAttew18
Salut, je galérais pas mal à suivre mes actifs crypto ces derniers temps, alors j'ai cherché une solution pour automatiser tout ça. Je suis tombé sur XapoBot Avis 2026 xapobotplatform.org/  et j'ai voulu voir ce que ça donnait concrètement. Les débuts ont été compliqués avec quelques pertes frustrantes, mais après avoir pris le temps de piger le truc, j'ai fini par obtenir un gain plutôt sympa. C'est vraiment une option solide pour ceux qui sont en France et veulent optimiser leur trading sans trop se prendre la tête.
Dernière édition: il y a 2 jours 5 heures par MAttew18.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.041 secondes
Propulsé par Kunena