Question
[RESOLU]Modif caractère dans fichier et solution
- Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 4
- Remerciements reçus 0
Bonjour,
Je viens vers vous pour trouver une solution.
Comme vous le verrez plus bas dans le message je fais partie des novices en powershell.
Je cherche à modifier uniquement les lignes qui commencent par \"4=\" le caractère \" 5\" par \" 3\" dans un fichier TXT et d'enregister les modifications.
Voici pour exemple une partie du fichier :
4=002 4
6=2.000
7=112.05758
8=98.34928
9=15.508
37=3163497.776
38=2031301.508
39=53.967
5=8
4=002 2
6=2.000
7=122.50523
8=98.59684
9=18.250
37=3163494.378
38=2031303.400
39=53.967
5=9
4=002 5
6=2.000
7=128.90948
8=98.78612
9=21.368
37=3163491.323
38=2031305.481
39=53.972
5=10
4=002 3
6=2.000
7=135.80944
8=99.22309
9=27.602
37=3163485.976
38=2031309.629
39=53.902
Le programme:
[code:1]
clear
$filenames = Get-ChildItem \"C:\Data_Transfert\Raw\*.txt\"
write-host \"$filenames\"
foreach ($filename in $filenames)
{
(Get-Content $filename) -replace ' 5', ' 3' | Set-Content $fileName
#SOLUTION QUI FONCTIONNE MAIS CHANGE TOUS LES \" 5\" \" 3\" DU FICHIER
(Get-Content $filename).Select-String -Pattern \"4=\" | foreach-object{$_-replace \" 5\" , \" 3\"} | Set-Content $Filename
#SOLUTION QUI FONCTIONNE MAIS LORSQUE J'OUVRE LE FICHIER IL NE CONTIENT QUE LES LIGNES \"4=Modifié ou pas\" ET LE RESTE A DISPARUE
}
[/code:1]
Par avance, je vous en remercie.
Christophe.
Message édité par: Tdmpowershell, à: 6/09/19 15:26
Message édité par: Tdmpowershell, à: 6/09/19 15:29<br><br>Message édité par: Tdmpowershell, à: 13/09/19 10:33
Connexion ou Créer un compte pour participer à la conversation.
- Hicham Madini
- Hors Ligne
- Membre premium
- Messages : 98
- Remerciements reçus 0
essaie comme ca
[code:1]clear
$filenames = Get-ChildItem \"C:\Data_Transfert\Raw\*.txt\"
write-host \"$filenames\"
foreach ($filename in $filenames)
{
(Get-Content $filename) | ForEach-Object {
if ( $_ -match '^4=' ) {
$_ -replace ' 5', ' 3'
}
else {
$_
}
} | Out-File $filename
}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 4
- Remerciements reçus 0
Merci pour votre réponse.
Je fais le test jeudi et je vous tiens informé.
Christophe.
Connexion ou Créer un compte pour participer à la conversation.
- Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 4
- Remerciements reçus 0
Génial, au top, exactement la procédure attendue, merci.
Evidemment deux questions quand vous avez un moment:
L'accent circonflexe placer avant \"^4=\", qu'elle signification?????
Qu'elle est la différence entre :
\" | Out-File $fileName\" et \" | Set-Content $fileName\"
Bonne journée,
Christophe.
Connexion ou Créer un compte pour participer à la conversation.
- Quentin
- Hors Ligne
- Membre senior
- Messages : 47
- Remerciements reçus 0
le \"^\" désigne le début de ligne (voir les leçons sur les regex)
Out-file va écraser le fichier
Set-content modifie juste le contenu
Out-file :
docs.microsoft.com/en-us/powershell/modu...le?view=powershell-6
Set-content :
docs.microsoft.com/en-us/powershell/modu...nt?view=powershell-6
Whitatrax
Connexion ou Créer un compte pour participer à la conversation.
- Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 4
- Remerciements reçus 0
Ok, je consulterai les liens dans un environnement plus tranquille.
Merci.
Christophe.
Ps: Je mets en résolu.
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- [RESOLU]Modif caractère dans fichier et solution