- forum
- PowerShell
- Entraide pour les débutants
- Extraire des données entre des marqueurs à partir de plusieurs fichiers
Question
Extraire des données entre des marqueurs à partir de plusieurs fichiers
- Jonathan
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 2 ans 7 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.
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.
- Jonathan
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 2 ans 7 mois #31247
par Jonathan
Réponse de Jonathan sur le sujet Extraire des données entre des marqueurs à partir de plusieurs fichiers
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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 2 ans 7 mois #31252
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Extraire des données entre des marqueurs à partir de plusieurs fichiers
Salut,
une piste à tester :
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.
- forum
- PowerShell
- Entraide pour les débutants
- Extraire des données entre des marqueurs à partir de plusieurs fichiers
Temps de génération de la page : 0.069 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Extraire des données entre des marqueurs à partir de plusieurs fichiers