Question Modifier la premiere ligne d'un fichier texte

Plus d'informations
il y a 15 ans 10 mois #2336 par Patrick Berthon
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 ... :P

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.

Plus d'informations
il y a 15 ans 10 mois #2340 par Laurent Dardenne
Salut,
Zylwee écrit:

j'ai bon ?

En partie :
tonic8 écrit:

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),..

D'où les contrôles proposés.

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 10 mois #2344 par Patrick Berthon
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

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

Plus d'informations
il y a 15 ans 9 mois #2518 par Gabriel
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, \&quot;\d{8}\&quot;, $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.

Plus d'informations
il y a 15 ans 9 mois #2519 par Laurent Dardenne
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, \&quot;\d{8}\&quot;, $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(\&quot; \&quot;«»)
[/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.

Plus d'informations
il y a 15 ans 9 mois #2520 par Gabriel
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 :laugh: .

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.083 secondes
Propulsé par Kunena