Question Script pour trier un fichier texte en fonction d'un caractère

Plus d'informations
il y a 2 ans 2 semaines #32183 par Muther
Bonjour le forum,

Je débute en Powershell et je bute sur un problème : écrire un script PS qui prend en entrée un fichier texte (exemple: input.txt) et qui donne en sortie deux fichiers texte : fic_a.txt et fic_b.txt
Le script parse ligne par ligne le fichier input.txt, pour cela j'utilise Get-Content et Foreach :
$file = Get-Content "D:\input.txt"
Foreach ($line in $file)
{
...
}
Le tri doit se faire sur le 33ième caractère de chaque ligne, si la valeur du 33ième caractère est 1 je copie la ligne dans un fichier disons fic_a.txt et si le caractère est différent de 1 je copie la ligne dans fic_b.txt

Je sèche et donc si vous avez des idées sur la méthode ce serai top !

Merci de m'avoir lu ;o)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 1 semaine #32188 par Philippe
salut Muther

tel que tu nous le présente ton tri peut se faire avec un if, 
comme chaque ligne est un e chaine de caractère, tu peux avoir accès à un caractère avec les crochet "line [32]" (pourquoi 32 parce que l'on compte a partir de zero dans un tableau !)
le "-eq" veut dire " égale à "
donc dans le if soit c'est egale à 1 soit non (le else)
le "+ "`n"" pour avoir des saut de ligne pour chaque ligne des nouveaux fichiers
voila !
$file = Get-Content "D:\input.txt"

$fic_a = ""
$fic_b = ""
Foreach ($line in $file) {
    if ($line[32] -eq "1") {
        $fic_a += $line + "`n"
        }
    else {
        $fic_b += $line + "`n"
        }
    }

$fic_a | Set-Content "D:\fic_a.txt"
$fic_b | Set-Content "D:\fic_b.txt"

bon scripting
 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 1 semaine #32194 par Muther
Bonjour et merci pour ton aide,

J'ai testé et c'est Ok, je ne connaissais pas cette façon d'alimenter un fichier avec += ainsi que la commande Set-Content.

Le sujet peut être fermé.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.066 secondes
Propulsé par Kunena