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 :

Découpage d'un fichier txt sous PowerShell [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 282
    Par défaut Découpage d'un fichier txt sous PowerShell
    Bonsoir

    J'ai un ami qui m'a fait un script sous linux, mais depuis peu je ne peux plus l'utiliser. Je voudrais faire le même sous powershell.

    Voici le script sous linux

    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
    #!/bin/bash
    
    fichier_source="Rsf.txt"
    NoLigne=0
    
    while read ligne
    do
    	NoLigne=$(($NoLigne+1))
    #	la ligne commence par un A
    	if [[ $ligne =~ ^A ]] ; then
    #	la ligne a un 0 en position 47
    		if [[ ${ligne:46:2} == "00" ]] ;then
    			echo "$NoLigne : $ligne"
    		fi
    	fi
    
    done < $fichier_source >test.txt
    Merci

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    c'est vraiment histoire de maniper (comme ça au moins j'apprends PowerShell, c'est cool) :

    Code bouzin.ps1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $c=0
    foreach ($line in Get-Content .\in.txt) {
       $c++
       if ($line -cmatch "^A.{45}00") {
          Write-Output "$c : $line" | Out-File "out.txt" -append
       }
    }

    sinon sous Linux on pouvait aussi écrire un truc du style : awk '/^A/ && substr($0,47,2)=="00" {print NR " : " $0}' in > out

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 282
    Par défaut
    Encore merci.

    Ca marche.

    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 282
    Par défaut
    Bonsoir

    Je m'excuse mais je me suis aperçu que cela ne marche pas. J'ai fais un test sur le fichier suivant

    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
    A7407800001
    B7407800001
    A7407800002
    B7407800002
    A7407800002
    B7407800002
    A7407800002
    B7407800002
    A7407800001
    B7407800001
    A7407800001
    B7407800001
    A7407800001
    B7407800001
    A7407800002
    B7407800002
    Avec ce script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $c=0
    foreach ($line in Get-Content .\in.txt) {
       $c++
       if ($line -cmatch "^A.{10}1") {
          Write-Output "$c : $line" | Out-File "out.txt" -append
       }
    }
    Je cherche à avoir comme résultat,

    1
    9
    11
    13

    Mais cela ne marche pas. Je n'arrive pas avoir le fichier out.txt

    Merci

  5. #5
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $c=0
    foreach ($line in Get-Content .\in.txt) {
       $c++
       if ($line -cmatch "^A.{9}1") {
          Write-Output "$c : $line" | Out-File "out.txt" -append
       }
    }

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 282
    Par défaut
    Merci, en effet cela marche.

    Mais je m'explique pas qu'il faut mettre 9 pour une position à 11.

    Encore merci

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

Discussions similaires

  1. [Oracle] Découpage d'un fichier .txt puis insertion dans base mysql
    Par laetiheu dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 20/08/2016, 12h52
  2. [PowerShell] Exploiter un fichier txt sous powershell
    Par islande dans le forum Scripts/Batch
    Réponses: 12
    Dernier message: 01/06/2016, 08h09
  3. Exporter fichier .txt sous Matlab
    Par XRAYS dans le forum MATLAB
    Réponses: 5
    Dernier message: 27/08/2008, 13h45
  4. probleme importation fichier .txt sous Excel
    Par darkspoilt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/11/2007, 18h15
  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