IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Exploiter un fichier txt sous powershell [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 261
    Points : 113
    Points
    113
    Par défaut Exploiter un fichier txt sous powershell
    Bonsoir,

    Je cherche à trouver dans un fichier txt, toutes les lignes commençant par un 2 et à trouver les chiffres de tel position à tel position.

    Par exemple

    J'ai un fichier comme ci dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    O...
    1...
    2...00216456
    2...
    4...
    4...
    4...
    2...00216465
    2...
    4...
    4...
    2...00215000
    2...
    4...
    4...
    4...
    Je résume, je cherche à trouver les chiffres de la position 40 à 48 sur toutes les lignes commençant par un 2 mais la première ligne

    J'ai commencer par trouver ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fichier = Get-Content C:\Users\j-vanden\Desktop\F22610486.txt
    foreach($ligne in $fichier)
    {
            $ligne = Select-String "^2"}
    Merci

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour à toi :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-Content .\test.txt | Select-String '^2' | %{$_.ToString().Substring(39)}
    Cette partie la à adapter :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    %{$_.ToString().Substring(39)}
    Si les 8 caractères ne sont pas les derniers de la ligne :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    %{$_.ToString().Substring(39,8)}
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 261
    Points : 113
    Points
    113
    Par défaut
    Bonsoir,

    Cela marche mais dans le fichier il y a deux lignes qui commencent par 2.

    Est ce qu'il y a la possibilité de prendre la première ligne.

    C'est à dire de prendre sur toutes les lignes commençant par un 2, la 1,3,5...

    Encore merci

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Heu.....
    C'est déjà le cas avec le code que j'ai donné !
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  5. #5
    Membre à l'essai Avatar de Kfrero
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par cerede2000 Voir le message
    Heu.....
    C'est déjà le cas avec le code que j'ai donné !
    Select-String '^2' sélectionne toutes les lignes commençant par un 2.Or, il veut sélectionner une ligne sur 2 commençant par un 2 si j'ai bien compris.

  6. #6
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ah bon ???
    Citation Envoyé par islande Voir le message
    Je cherche à trouver dans un fichier txt, toutes les lignes commençant par un 2 et à trouver les chiffres de tel position à tel position.
    Le besoin est traité !

    Maintenant si ce n'est pas ça va falloir être plus claire parce que la......
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  7. #7
    Membre à l'essai Avatar de Kfrero
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 21
    Points
    21
    Par défaut
    Est ce qu'il y a la possibilité de prendre la première ligne.
    Je ferai comme ça :

    Le contenu de mon ficher texte TEST2.txt est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    11111111111111111111111111111111111111111111111111111
    2AK111111111111111111111111111111111111BINGOOOO111111
    2ndLigne000000000000000000000000000000000000000000000
    11111111111111111111111111111111111111111111111111111
    2AK111111111111111111111111111111111111BINGOOOO111111
    2ndLigne000000000000000000000000000000000000000000000
    11111111111111111111111111111111111111111111111111111
    2AK111111111111111111111111111111111111BINGOOOO111111
    2ndLigne000000000000000000000000000000000000000000000
    11111111111111111111111111111111111111111111111111111
    2AK111111111111111111111111111111111111BINGOOOO111111
    2ndLigne000000000000000000000000000000000000000000000
    11111111111111111111111111111111111111111111111111111
    2AK111111111111111111111111111111111111BINGOOOO111111
    2ndLigne000000000000000000000000000000000000000000000
    11111111111111111111111111111111111111111111111111111
    2AK111111111111111111111111111111111111BINGOOOO111111
    2ndLigne000000000000000000000000000000000000000000000
    11111111111111111111111111111111111111111111111111111
    2AK111111111111111111111111111111111111BINGOOOO111111
    2ndLigne000000000000000000000000000000000000000000000
    11111111111111111111111111111111111111111111111111111
    Le script powershell


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $a = Get-Content "D:\TEST2.txt"
    $i = 0
    foreach ($_ in $a){
    
    if (
    $_ | Select-String '^2' | where { $a[$i+1] | Select-String -AllMatches '^2'}  ){
    
    $_ -match ".{39}(.{8})" | out-null
    Write-Host $matches[1] 
    }
    $i++
    }
    Le script permet d'extraire les valeurs comprises entre la position 40 à 48 donc dans mon cas la valeur BINGOOOO.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 261
    Points : 113
    Points
    113
    Par défaut
    Bonsoir

    Merci pour vos réponses mais j'ai fait un test avec cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-Content \fides\Essai.txt | Select-String '^2' | %{$_.ToString().Substring(39,9)}
    Sur le fichier joint et j'obtiens ceci

    002168520
    010780000
    002168542
    010780000
    002170089
    010780000

    Ce que je cherche à récupérer, c'est 002168520, 002168542, 002170089

    Merci
    Fichiers attachés Fichiers attachés

  9. #9
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Bonjour,

    Parmi les lignes qui commencent pas un 2, une fois sur deux, on prend du 40ème au 49éme caractères.
    Je te propose ce code.

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $i = $false
    Select-String -Path "Essai.txt" -Pattern '^2.{38}(.{9})'| Select-Object -ExpandProperty Matches | ForEach-Object {if ($i = -not $i) {$_.Groups[1].Value}}

    ou ça
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $i = 0
    Get-Content Essai.txt | Foreach-Object { if($_ -match '^2.{38}(.{9})' -and $i++ % 2 -eq 0) {$($matches[1])}}

    Sorti :
    002168520
    002168542
    002170089

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 261
    Points : 113
    Points
    113
    Par défaut
    Bonsoir

    Encore merci pour toutes vos réponses.

    J'ai ce qu'il me faut pour exploiter mon fichier.

    Merci

  11. #11
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Un simple test sur la présence du S aurait également permis d'éliminer les lignes non désirées
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 261
    Points : 113
    Points
    113
    Par défaut
    Bonsoir

    Encore merci mais qu'est ce que tu veux dire par :

    Un simple test sur la présence du S aurait également permis d'éliminer les lignes non désirées

    merci

  13. #13
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Comme dans ton fichier les lignes qui commencent par un 2 et qui ne sont pas désirés contiennent un S.
    Et bien simplement comme ceci :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-Content Essai.txt | %{if($_ -match '^2[\d ]*$') { $_.Substring(39,9)} }
    Ou
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Select-String .\Essai.txt -Pattern '^2[\d ]*$' | %{$_.Line.Substring(39,9)}
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. convertir table SAS en un fichier .txt sous UNIX
    Par Ines2013 dans le forum SAS Base
    Réponses: 3
    Dernier message: 22/09/2008, 09h56
  2. Exporter fichier .txt sous Matlab
    Par XRAYS dans le forum MATLAB
    Réponses: 5
    Dernier message: 27/08/2008, 13h45
  3. probleme importation fichier .txt sous Excel
    Par darkspoilt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/11/2007, 18h15
  4. Exploiter un fichier TXT
    Par Djohn dans le forum Excel
    Réponses: 1
    Dernier message: 05/07/2007, 14h33
  5. Comment parser un fichier.txt sous Access?
    Par takepaf dans le forum VBA Access
    Réponses: 5
    Dernier message: 31/05/2007, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo