Question
Garder deux lignes spécifiques et leurs ligne suivante
- Zamboni
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 1 an 11 mois - il y a 1 an 11 mois #32285
par Zamboni
Garder deux lignes spécifiques et leurs ligne suivante a été créé par Zamboni
Bonjour,
Dans des fichiers (log.rpt) sous forme de texte, j'essaye de faire un script qui:
- Sélectionne une ligne spécifique avec un mot clé (Y)
- Garde la ligne suivante(Y+1)
- Supprime tout ce qui se trouve entre Y+1 et la prochaine ligne contenant un autre mot clé (Z)
- Garde aussi la ligne suivante (Z+1).
- Supprime ce qui se trouve après Z+1
Ce qui donnerait:
AVANT
Pour détailler:
- Les logs journalier varient de 1700 à 7000 lignes chaque jour, mon script actuel l'épure à une 60aines.
- J'essaye d'isoler ces 4 lignes, afin de sortir le texte en .csv et l'importer dans un tableur Excel (qui recensera chaque jour de façon automatique)
- Le nombre de lignes entre Y+1 et Z est aléatoire.
Mon scripte actuel:
J'ai fait beaucoup de recherches et d'essais, mais la je bloque depuis un moment.
Merci d'avance pour vos réponses
Dans des fichiers (log.rpt) sous forme de texte, j'essaye de faire un script qui:
- Sélectionne une ligne spécifique avec un mot clé (Y)
- Garde la ligne suivante(Y+1)
- Supprime tout ce qui se trouve entre Y+1 et la prochaine ligne contenant un autre mot clé (Z)
- Garde aussi la ligne suivante (Z+1).
- Supprime ce qui se trouve après Z+1
Ce qui donnerait:
AVANT
APRÈS11 rows selected.
11 rows selected.
11-05-2022 06:00:01 <-- Y
17 rows selected. <-- Y+1
14 rows selected.
28 rows selected.
47 rows selected.
21 rows selected.
37 rows selected.
21 rows selected.
11-05-2022 21:00:01 <-- Z
37 rows selected. <-- Z+1
21 rows selected.
11-05-2022 06:00:01 <-- Y
17 rows selected. <-- Y+1
11-05-2022 21:00:01 <-- Z
37 rows selected. <-- Z+1
Pour détailler:
- Les logs journalier varient de 1700 à 7000 lignes chaque jour, mon script actuel l'épure à une 60aines.
- J'essaye d'isoler ces 4 lignes, afin de sortir le texte en .csv et l'importer dans un tableur Excel (qui recensera chaque jour de façon automatique)
- Le nombre de lignes entre Y+1 et Z est aléatoire.
Mon scripte actuel:
$date = '11-05-2022'
Get-Content C:\Users\zambonis\EXL\Logirpt\Decon_CarPre$date.rpt |
Where-Object {$_ -match 'rows selected|06:00|21:00'} |
Where-Object {$_ -notmatch 'no rows selected'} |
Set-Content C:\Users\zambonis\EXL\Logitxt\Decon_CarPre$b.txt |
#Set-Content C:\Users\zambonis\EXL\Logicsv\Decon_CarPre$date.csv
J'ai fait beaucoup de recherches et d'essais, mais la je bloque depuis un moment.
Merci d'avance pour vos réponses
Dernière édition: il y a 1 an 11 mois par Zamboni. Raison: Mise en forme
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 1 an 11 mois #32286
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Garder deux lignes spécifiques et leurs ligne suivante
Salut,
une possibilité avec Select-String :Ton code contient le cas 'no rows selected' mais pas les données d'exemple.
une possibilité avec Select-String :
$r=select-string -Path c:\temp\datas.txt -Pattern '^\d\d-\d\d-\d\d\d\d ' -Context 1
$r[0].line
$r[0].Context.PostContext
Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: Zamboni
Connexion ou Créer un compte pour participer à la conversation.
- Zamboni
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 1 an 11 mois #32289
par Zamboni
Réponse de Zamboni sur le sujet Garder deux lignes spécifiques et leurs ligne suivante
Merci beaucoup,
Select-string -contexte était bien la solution,
Je l'ai adapté pour ne garder qu'une seule ligne en post-context
Résultat:
Select-string -contexte était bien la solution,
Je l'ai adapté pour ne garder qu'une seule ligne en post-context
cls
$date = '11-05-2022'
$a = Get-Content C:\Users\zambonis\EXL\Logirpt\Decon_CarPre$date.rpt |
#Epurer le log, ne garder que 6h, 21h et les rows >1
Where-Object {$_ -match 'rows selected|06:00|21:00'} |
Where-Object {$_ -notmatch 'no rows selected'} |
#Garder une ligne après 6h une ligne après 21h
Select-string -Pattern "06:00|21:00" -Context 0,1
#Mise en forme
$b = $a -replace '>',' ' |
Set-Content C:\Users\zambonis\EXL\Logicsv\Decon_CarPre$b.csv
Résultat:
Merci encore, bonne journée11-05-2022 06:00:01
17 rows selected.
11-05-2022 21:00:01
37 rows selected.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.069 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Garder deux lignes spécifiques et leurs ligne suivante