Question
Ajout d'un caractère en fin de ligne
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 3 mois #5708
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Ajout d'un caractère en fin de ligne
Seals écrit:
Comme le dit Arnaud si on considére le fichier comme une suite d'octets on pourrait procéder ainsi.
Mais avec Get-Content, les CR-LF ne sont pas présent dans les chaînes résultantes, c'est pour cette raison que cela ne fonctionne pas :
[code:1]
$f=\"c:\temp\test.txt\"
#gc $f|Foreach {$_ -replace '^(.*)$','$1X'}
gc $f|Foreach {$_ -replace '^([1-9]*) (.*)$','$1 \"$2\"'}
[/code:1]
Ensuite reste à adapter la regex selon tes specs.
Notre erreur ici est de considérer que le CR-LF est tjr présent dans la variable une fois la lecture effectuée.J'ai bien les valeur 0x0D 0x0A à la fin de mon fichier.
Comme le dit Arnaud si on considére le fichier comme une suite d'octets on pourrait procéder ainsi.
Mais avec Get-Content, les CR-LF ne sont pas présent dans les chaînes résultantes, c'est pour cette raison que cela ne fonctionne pas :
[code:1]
$f=\"c:\temp\test.txt\"
#gc $f|Foreach {$_ -replace '^(.*)$','$1X'}
gc $f|Foreach {$_ -replace '^([1-9]*) (.*)$','$1 \"$2\"'}
[/code:1]
Ensuite reste à adapter la regex selon tes specs.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 3 mois #5713
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Ajout d'un caractère en fin de ligne
Je pense que la solution de Laurent fonctionne toutefois si comme moi tu ne maitrises pas bien les regex tu peux envisager une autre technique.
Celle que je te propose est de prendre chaque ligne unitairement. Ensuite tu découpes ta chaine en sous chaine en prenant le délimiteur <espace>, puis tu concatènes une nouvelle chaine en mettant les guillemets au bon endroit.
Voici de quoi te mettre en piste :
[code:1]
PS > $tab
4681 XXX Dupont Marcel
4646 XXX Wagner Thierry
3584 XXX Thilly Beertrand
PS > $tab[0]
4681 XXX Dupont Marcel
PS > $tab[0] -split ' '
4681
XXX
Dupont
Marcel
PS > $tabtmp = $tab[0] -split ' '
PS > $result = $tabtmp[0]+ ' \"' +$tabtmp[1..3] +'\"'
PS > $result
4681 \"XXX Dupont Marcel\"
[/code:1]
Arnaud
Celle que je te propose est de prendre chaque ligne unitairement. Ensuite tu découpes ta chaine en sous chaine en prenant le délimiteur <espace>, puis tu concatènes une nouvelle chaine en mettant les guillemets au bon endroit.
Voici de quoi te mettre en piste :
[code:1]
PS > $tab
4681 XXX Dupont Marcel
4646 XXX Wagner Thierry
3584 XXX Thilly Beertrand
PS > $tab[0]
4681 XXX Dupont Marcel
PS > $tab[0] -split ' '
4681
XXX
Dupont
Marcel
PS > $tabtmp = $tab[0] -split ' '
PS > $result = $tabtmp[0]+ ' \"' +$tabtmp[1..3] +'\"'
PS > $result
4681 \"XXX Dupont Marcel\"
[/code:1]
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Seals
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 16 ans 3 mois #5716
par Seals
Réponse de Seals sur le sujet Re:Ajout d'un caractère en fin de ligne
Je vous remercie pour vos réponses, je m'en vais tester tout ca... un long travail de compréhension m'attend !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.040 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Ajout d'un caractère en fin de ligne