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 :

Récupérer certaines lignes d'un fichier txt dans un autre [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 39
    Points : 38
    Points
    38
    Par défaut Récupérer certaines lignes d'un fichier txt dans un autre
    Bonjour,

    Je cherche à récupérer toutes les lignes d'un fichier .txt où on a le mot "Testing" et donc les lister dans un nouveau fichier .txt.

    C'est la partie récupération des lignes qui m'interressent avec le mot "Testing" que je n'arrive pas à faire.

    Une idée?

    Merci.

  2. #2
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    findstr est ton amie (ou grep)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type monfichier | findstr testing >>Monfichiertrié

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     #Récupère l'objet Fichier
    Gci "$pwd\New-test.Txt"|
      #Mémorise l'objet Fichier courant, puis le réémet
     Foreach {$CurrentFile=$_;$_}|
      #Lit ligne par ligne
     Get-Content|
      #Recherche le pattern (regex) "Testting"
     Select-String -Pattern "Testing"|
      #Ecrit le résultat dans un fichier.
       #Son nom est construit à partir du nom du fichier courant
       #préfixé par 'New-'
     Set-Content "$Pwd\new-$($CurrentFile.Name)"
     # résultat dans "$pwd\New-Test.Txt"

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 39
    Points : 38
    Points
    38
    Par défaut
    Ca marche très bien, c'es exactement ce que je cherchais

    Merci.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 64
    Points
    64
    Par défaut Récupérer certaines lignes d'un fichier txt dans un autre d'une balise à une autre...
    Salut ,
    Intéressant comme ensemble de commandes...
    Mais un approfondissement dans ce type d'extraction peut-être utile :
    -> comment faire pour extraire l'ensemble des lignes d'un texte,
    entre une balise (comme celle-ci par exemple "Testing-debut")
    et une autre balise qui se trouverait quelques lignes plus bas dans le texte (sans en connaître le nombre de lignes, deuxième balise comme "Testing-fin" par exemple) ?

    Merci de votre aide

  6. #6
    Membre habitué

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Points : 191
    Points
    191
    Par défaut
    Bonjour,

    On peut faire une boucle qui a trois fonction:
    1: j'active une variable si balise 1 détecté
    2: je désactive la variable si balise 2 détecté
    3: si variable active je récupère le contenu

    EDIT:C'est pour du batch pas du powershell dsl

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Points : 64
    Points
    64
    Par défaut
    Voir excellente proposition sur :

    http://social.technet.microsoft.com/...8-b5628c679240

    Select-String est basée sur des lignes de texte.
    Par défaut, Select-String recherche la première correspondance dans chaque ligne et, pour chaque correspondance, elle affiche le nom de fichier, le numéro de ligne et tout le texte de la ligne contenant la correspondance.

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par Cmanix Voir le message
    EDIT:C'est pour du batch pas du powershell dsl
    On peut utiliser le même principe :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #Remove-AuthenticodeSignature.ps1
    Filter Remove-AuthenticodeSignature{
    #([Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding] $Encoding="ASCII")
     
       function Parse([String] $FileName)
       { #renvoi toutes les lignes sauf celles du bloc de signature
         $isSignatureBloc=$False
         Get-Content -Path $FileName|
         Foreach-Object { 
           switch ($_)  
           {
             "# SIG # Begin signature block"  {$isSignatureBloc=$True;continue}
             "# SIG # End signature block"    {$isSignatureBloc=$False;Continue}
     
             default {
               if ($isSignatureBloc -eq $false)
                  #On traite les lignes qui ne se trouvent pas dans le bloc de signature 
                {$_}
             }#default
          }#Switch
         }#Foreach
       }#Parse
     
     if ($_ )
     {  
       #Récupére un nom de fichier créé par l'OS
      $TempFile = [IO.Path]::GetTempFileName()
      $FullPath=Resolve-Path "$_"
      Write-Debug "$TempFile"
      Write-Debug "$FullPath" 
     
     
       #Extrait toutes les lignes sauf la signature dans un fichier temporaire 
      Parse "$FullPath"|Set-Content "$TempFile"
       #Ecrase le fichier d'origine à partir du fichier temporaire
       #$FileInfo.Replace ne fonctionne pas car %Temp% 
       #peut être sur un disque différent de celui de la source :/ 
      Get-Content "$TempFile"|Set-Content "$FullPath" 
      Del "$TempFile" 
     }
     else {Write-Error "[Remove-AuthenticodeSignature] Ce filtre a reçu une donnée `$null du pipeline."}
    }
    # SIG # Begin signature block
    # MIIFQgYJKoZIhvcNAQcCoIIFMzCCBS8CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
    # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
    # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUZaP2hylnBr/suMdijkJa0Kri
    # MQigggL8MIIC+DCCAmWgAwIBAgIQGpdOSYj2EbRAxGqmgFirkTAJBgUrDgMCHQUA
    # MHsxeTB3BgNVBAMecABMAGEAdQByAGUAbgB0ACAARABhAHIAZABlAG4AbgBlACAA
    # YQB1AHQAbwByAGkAdADpACAAZABlACAAYwBlAHIAdABpAGYAaQBjAGEAdABpAG8A
    # bgAgAHIAYQBjAGkAbgBlACAAbABvAGMAYQBsAGUwHhcNMDcwNzAxMTMyNjU5WhcN
    # MzkxMjMxMjM1OTU5WjA2MTQwMgYDVQQDEytMYXVyZW50IERhcmRlbm5lIGNlcnRp
    # ZmljYXQgcG91ciBQb3dlclNoZWxsMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
    # gQCfu+w77PdPXH8+C41SaR48k/DPql1EPDL8O4gArRwbKH/McvXmXCKEwaWYlFi7
    # w8F4CwO/kBswENa+0X3OXLUOK0LyQmJP7VQqA+mT4Up+a5Z3mcsRd1Out+OzfOuR
    # hium1zhE1/MlIqEK6hnMl/A/bkc4SCFfdiJeZc83tNkGXwIDAQABo4HJMIHGMBMG
    # A1UdJQQMMAoGCCsGAQUFBwMDMIGuBgNVHQEEgaYwgaOAEB0w3fWBsN0e2nTMjcGF
    # f8qhfTB7MXkwdwYDVQQDHnAATABhAHUAcgBlAG4AdAAgAEQAYQByAGQAZQBuAG4A
    # ZQAgAGEAdQB0AG8AcgBpAHQA6QAgAGQAZQAgAGMAZQByAHQAaQBmAGkAYwBhAHQA
    # aQBvAG4AIAByAGEAYwBpAG4AZQAgAGwAbwBjAGEAbABlghAb5Gp5W/j2oEZ4E3Mn
    # LmpOMAkGBSsOAwIdBQADgYEAoEjrLmRoEscvqLGp6RXFH55NjCul7e118oWxlpHt
    # hcme2FZVN0vNB0Xqa+A3YU4QyYhYNeBaJ/gsgv1MC7PnuBR2ek58mTwVa6WlVNrn
    # KK8A7P3MRVCOGVYkOiw5xttWFvPPph1YG1CAAwAwSI+nIfJCxyJDceOvvbCoV+US
    # FLgxggGwMIIBrAIBATCBjzB7MXkwdwYDVQQDHnAATABhAHUAcgBlAG4AdAAgAEQA
    # YQByAGQAZQBuAG4AZQAgAGEAdQB0AG8AcgBpAHQA6QAgAGQAZQAgAGMAZQByAHQA
    # aQBmAGkAYwBhAHQAaQBvAG4AIAByAGEAYwBpAG4AZQAgAGwAbwBjAGEAbABlAhAa
    # l05JiPYRtEDEaqaAWKuRMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQowCKAC
    # gAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsx
    # DjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBTwg/tOdwQh4ebSxQQvA80x
    # 42wPMDANBgkqhkiG9w0BAQEFAASBgGmHyhWhnk/5Ji2uQHFucy0ew0ljnkpvvPtd
    # FVYi5t/S54zwES7Di0KO9+P4exW1WyM4makuVSmqkuzIIgqUT3fQX/hOUWnMZOGd
    # 503hr38PoSkE+WUE66c4dqDAy3AY8vVmFpSZhqA1+OcaVNX0IHo52ZkzwVa6CGWg
    # 5N7aJHEu
    # SIG # End signature block
    Citation Envoyé par Robyx Voir le message
    Voir excellente proposition sur :
    Je ne pense pas qu'elle réponde au besoin exprimée.
    Faute de temps, je n'ai pas creusé le sujet, mais je l'idée serait d'utiliser une regex multilignes.
    YaPlusKa

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

Discussions similaires

  1. Extraction des lignes d'un fichier txt dans un tableau
    Par med.ben235 dans le forum Débuter
    Réponses: 1
    Dernier message: 28/04/2014, 17h56
  2. [PowerShell] Comment récupérer certaines lignes d'un fichier pour ensuite s'en servir
    Par Zipper963 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 13/12/2012, 15h35
  3. [PowerShell] Récupérer des lignes d'un fichier txt dans un autre
    Par Boulboul22 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 24/04/2012, 21h44
  4. Récupérer certaine lignes d'un fichier
    Par piktux dans le forum Général Python
    Réponses: 37
    Dernier message: 09/02/2010, 09h46
  5. Réponses: 3
    Dernier message: 24/04/2007, 11h06

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