Question
Modifier la premiere ligne d'un fichier texte
- Patrick Berthon
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 100
- Remerciements reçus 0
il y a 16 ans 7 mois #2336
par Patrick Berthon
Réponse de Patrick Berthon sur le sujet Re:Modifier la premiere ligne d'un fichier texte
Salut, je débute, alors pas les dents, einh !
si $a = Get-Content fichier.txt
alors $a.Count = nombre de lignes
donc $a[1..$a.Count-1] doit valoir tout le fichier sauf la première ligne
donc si
$b = {LaDateDuJourQueTuRecupJeSaisPasComment}
$b+=$a[1..$a.Count-1]
Set-Content fichier.txt $b
devrait faire ce que j'ai compris que tu veux faire.
j'ai bon ?
Merci
PS: Soluce de faignant, oui, je sais ...
Message édité par: Zylwee, à: 26/05/08 22:21<br><br>Message édité par: Zylwee, à: 26/05/08 22:21
si $a = Get-Content fichier.txt
alors $a.Count = nombre de lignes
donc $a[1..$a.Count-1] doit valoir tout le fichier sauf la première ligne
donc si
$b = {LaDateDuJourQueTuRecupJeSaisPasComment}
$b+=$a[1..$a.Count-1]
Set-Content fichier.txt $b
devrait faire ce que j'ai compris que tu veux faire.
j'ai bon ?
Merci
PS: Soluce de faignant, oui, je sais ...
Message édité par: Zylwee, à: 26/05/08 22:21<br><br>Message édité par: Zylwee, à: 26/05/08 22:21
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 16 ans 7 mois #2340
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Modifier la premiere ligne d'un fichier texte
Salut,
Zylwee écrit:
tonic8 écrit:
Zylwee écrit:
En partie :j'ai bon ?
tonic8 écrit:
D'où les contrôles proposés.J'explique au depart je voulais changer la premiere ligne de mon fichier texte, ce qui couvrait mon besoin avec un danger si quelqu'un vire la premiere ligne alors mon script modifierai des données utiles (la 2eme ligne etant devenu la premiere),..
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Patrick Berthon
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 100
- Remerciements reçus 0
il y a 16 ans 7 mois #2344
par Patrick Berthon
Réponse de Patrick Berthon sur le sujet Re:Modifier la premiere ligne d'un fichier texte
Si la structure du fichier (plus précisément le nombre de lignes qu'il doit avoir) est fixe et connu, alors un simple comptage de ces lignes ne suffit-il pas à s'assurer que le fichier est encore valide ?
PS : mais effectivement, j'ai loupé le morceau précisant les contraintes.<br><br>Message édité par: Zylwee, à: 27/05/08 11:48
PS : mais effectivement, j'ai loupé le morceau précisant les contraintes.<br><br>Message édité par: Zylwee, à: 27/05/08 11:48
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 16 ans 6 mois #2518
par Gabriel
Réponse de Gabriel sur le sujet Re:Modifier la premiere ligne d'un fichier texte
ben alors merci a tous j'ai encore un probleme...
[code:1]
$toto = Get-Content c:\conf.txt
$dateJournal = get-date -format yyyyMMdd
$tata = [regex]::Replace($toto, \"\d{8}\", $dateJournal);
Set-Content -path conf.txt $tata
[/code:1]
probleme: en entree j'ai un fichier texte avec un parametres par ligne. Seulement en sortie le fichier lui n'est plus que sur une ligne...
ex:
toto
tata
titi
deviennent
toto tata titi
si vous avez une idee eclair...
[code:1]
$toto = Get-Content c:\conf.txt
$dateJournal = get-date -format yyyyMMdd
$tata = [regex]::Replace($toto, \"\d{8}\", $dateJournal);
Set-Content -path conf.txt $tata
[/code:1]
probleme: en entree j'ai un fichier texte avec un parametres par ligne. Seulement en sortie le fichier lui n'est plus que sur une ligne...
ex:
toto
tata
titi
deviennent
toto tata titi
si vous avez une idee eclair...
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 16 ans 6 mois #2519
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Modifier la premiere ligne d'un fichier texte
Salut,
le tableau est converti en string puisque la signature de la méthode replace attend un type string pour le 1er paramétre, voir le détail avec :
[code:1]
trace-command -opt all typeconversion -pshost {$tata=[regex]::Replace($toto, \"\d{8}\", $dateJournal)}
[/code:1]
Rapido, effectue un replace sur chaque élément du tableau et pas sur l'intégralité.
On peut aussi découper la chaîne résultante en un tableau mais le choix du séparator peut poser pb :
[code:1]
$tata.split(\" \"«»)
[/code:1]
Dans ce cas les lignes de ton fichier ne doivent pas contenir d'espace.
Et autant préciser le type pour cette ligne :
[code:1]
[String[]]$toto = Get-Content c:\conf.txt
[/code:1]
le tableau est converti en string puisque la signature de la méthode replace attend un type string pour le 1er paramétre, voir le détail avec :
[code:1]
trace-command -opt all typeconversion -pshost {$tata=[regex]::Replace($toto, \"\d{8}\", $dateJournal)}
[/code:1]
Rapido, effectue un replace sur chaque élément du tableau et pas sur l'intégralité.
On peut aussi découper la chaîne résultante en un tableau mais le choix du séparator peut poser pb :
[code:1]
$tata.split(\" \"«»)
[/code:1]
Dans ce cas les lignes de ton fichier ne doivent pas contenir d'espace.
Et autant préciser le type pour cette ligne :
[code:1]
[String[]]$toto = Get-Content c:\conf.txt
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
- Auteur du sujet
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 16 ans 6 mois #2520
par Gabriel
Réponse de Gabriel sur le sujet Re:Modifier la premiere ligne d'un fichier texte
ouch plutot violent...
le problème c'est que la première ligne, contient un espace (genre [code:1]c:\program files\toto[/code:1])
l'idée de base c'est de parser la première ligne et de lui changer la date pour la mettre à jour
dans le fichier on a
[code:1]
c:\program files\toto\200806020.log
tototo
tututu:12321
[/code:1]
je lance le script pour qu'il génère un nouveau fichier log donc le script doit changer que la date (on la récupère facilement grâce à la cmdlet qui va bien .
on doit obtenir
[code:1]
c:\program files\toto\200806026.log
tototo
tututu:12321
[/code:1]
c'est un truc simple a faire en perl mais je dois pas prendre la bonne philosophie...
C'est très simple d'avoir le contenu du fichier avec get-content, c'est très simple de lire les données et les modifier.
mais tout d'un coup c'est galère à sauver...
C'est si compliqué d'ouvrir le fichier lire la première ligne rechercher une date (ou plus simple 8 caractères en chiffre) écrire a la place 8 autres, puis fermer le fichier (ou même se taper toutes les lignes ?
Je te remercie quand même je vais regarder du coté du tableau mais c'est la sortie qui va encore me poser probleme je suppose...
A clever person solves a problem. A wise person avoids it. Einstein
Une personne intelligente résout un problème. Une personne sage l'évite. Einstein
Message édité par: tonic8, à: 26/06/08 23:00<br><br>Message édité par: tonic8, à: 26/06/08 23:01
le problème c'est que la première ligne, contient un espace (genre [code:1]c:\program files\toto[/code:1])
l'idée de base c'est de parser la première ligne et de lui changer la date pour la mettre à jour
dans le fichier on a
[code:1]
c:\program files\toto\200806020.log
tototo
tututu:12321
[/code:1]
je lance le script pour qu'il génère un nouveau fichier log donc le script doit changer que la date (on la récupère facilement grâce à la cmdlet qui va bien .
on doit obtenir
[code:1]
c:\program files\toto\200806026.log
tototo
tututu:12321
[/code:1]
c'est un truc simple a faire en perl mais je dois pas prendre la bonne philosophie...
C'est très simple d'avoir le contenu du fichier avec get-content, c'est très simple de lire les données et les modifier.
mais tout d'un coup c'est galère à sauver...
C'est si compliqué d'ouvrir le fichier lire la première ligne rechercher une date (ou plus simple 8 caractères en chiffre) écrire a la place 8 autres, puis fermer le fichier (ou même se taper toutes les lignes ?
Je te remercie quand même je vais regarder du coté du tableau mais c'est la sortie qui va encore me poser probleme je suppose...
A clever person solves a problem. A wise person avoids it. Einstein
Une personne intelligente résout un problème. Une personne sage l'évite. Einstein
Message édité par: tonic8, à: 26/06/08 23:00<br><br>Message édité par: tonic8, à: 26/06/08 23:01
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.132 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Modifier la premiere ligne d'un fichier texte