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 :

Supprimer 1 ligne sur 2 d'un fichier texte de plusieurs Go


Sujet :

Scripts/Batch

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Août 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Supprimer 1 ligne sur 2 d'un fichier texte de plusieurs Go
    Bonjour,

    J'ai récupéré des fichiers de données au format texte de plusieurs Go, et je n'arrive pas à les exploiter avec mes outils habituels.
    Je voulais du coup chercher à les alléger en supprimant 1 ligne sur 2 (ou même 9 lignes sur par exemple) pour les ramener à une taille plus raisonnable.

    Ex : "Fichier_original.txt"
    Ligne1
    Ligne2
    Ligne3
    Ligne4
    Ligne5
    ...


    devient "Fichier_allege.txt" :
    Ligne1
    Ligne3
    Ligne5
    ...


    J'ai regarde ce qu'il était possible de faire avec PowerShell, en Batch, voire même en VB mais pas moyen de trouver un script à adapter pour traiter un tel cas...

    Est-ce que quelqu'un aurait LA bonne idée ?
    ++

  2. #2
    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 newby_wan Voir le message
    Est-ce que quelqu'un aurait LA bonne idée ?
    Si tu peux te contenter d'une idée pour la v1 :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $Lines=0..20|% {"line $_"}
    $i=0;$Lines|Where-Object {$i++ % 2}
    #line 1
    #line 3
    #line 5
    #...
    Reste à utiliser :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Get-Content|Where-Object ..|Set-Content

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    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 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Je ferais comme ceci

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $file = "C:\MonDoc.txt"
    $skiploop = 2
     
    $fileContent = @(Get-Content -Path $file -ErrorAction SilentlyContinue)
     
    for($i=0 ; $i -lt $fileContent.Count; $i += $skiploop)
    {
        Write-Host $fileContent[$i]
    }

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Je ferais comme ceci

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $file = "C:\MonDoc.txt"
    $skiploop = 2
     
    $fileContent = @(Get-Content -Path $file -ErrorAction SilentlyContinue)
     
    for($i=0 ; $i -lt $fileContent.Count; $i += $skiploop)
    {
        Write-Host $fileContent[$i]
    }
    Pour des fichiers de plusieurs Gb ça va pédaler !!!

    Je vous passe un articles intèressant sur les différentes méthode et leur rapidité pour lire de fichiers !

    http://www.happysysadm.com/2014/10/r...owershell.html


    Je conseille d'utiliser : Get-content avec -readcount (faire qqe test avec des valeurs de 0, 1000 et 10000) pour voir quel valeur est la meilleurs dans ce cas

    ou sinon : switch

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

Discussions similaires

  1. [Débutant] Lire 1 ligne sur 3 dans un fichier texte
    Par Kikibolderiz dans le forum VB.NET
    Réponses: 3
    Dernier message: 19/06/2018, 09h20
  2. Supprimer les lignes en double dans un fichier texte
    Par SilkyRoad dans le forum Contribuez
    Réponses: 1
    Dernier message: 01/05/2017, 15h09
  3. Supprimer une ligne a partir d'un fichier texte
    Par Msysteme dans le forum C#
    Réponses: 10
    Dernier message: 23/06/2009, 17h05
  4. Supprimer des lignes sur un test de date
    Par cynoq dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/11/2007, 17h37
  5. [VBA-E] - Supprimer une ligne sur un critere.
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/06/2007, 15h52

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