Question
Recuperer informations dans un fichier .txt
- ClementG
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 2 ans 1 semaine #32680
par ClementG
Recuperer informations dans un fichier .txt a été créé par ClementG
Bonjour étant débutant dans powershell je bloque sur un petit truc.
Je suis entrain d'écrire un script manipulant des informations dans des fichiers .txt.
Mais voila je bloque sur un point.
Je voudrais récuperer des informations bien précises dans un fichier txt. Je m'explique :
Le fichier est constitué ainsi :
(...)
azazaza
zazazaza
Données du serveur :
azazaz
azazaz
azaza
azaza
(...)
Données du serveur 2 :
aaaa
(...).
Je voudrais récuperer uniquement les informations situées entre "données du serveur" et "données du serveurs 2" grace a une commande powershell.
Get-content le fait il ?
De plus dans un second temps, j'ai un fichier avec des informations de ce type :
ABCD-données
ABCD-données2
ABCD-données3
(...)
Je voudrais récuperer toutes les lignes du fichier pour les mettres dans un nouveau fichier txt mais sans la partie "ABCD-" situé devant les données.
En gros le nouveau fichier sera composé comme ca :
données
données2
données3
(...)
Avez vous une idee de comment faire ?
Je vous remercie par avance pour votre aide
Je suis entrain d'écrire un script manipulant des informations dans des fichiers .txt.
Mais voila je bloque sur un point.
Je voudrais récuperer des informations bien précises dans un fichier txt. Je m'explique :
Le fichier est constitué ainsi :
(...)
azazaza
zazazaza
Données du serveur :
azazaz
azazaz
azaza
azaza
(...)
Données du serveur 2 :
aaaa
(...).
Je voudrais récuperer uniquement les informations situées entre "données du serveur" et "données du serveurs 2" grace a une commande powershell.
Get-content le fait il ?
De plus dans un second temps, j'ai un fichier avec des informations de ce type :
ABCD-données
ABCD-données2
ABCD-données3
(...)
Je voudrais récuperer toutes les lignes du fichier pour les mettres dans un nouveau fichier txt mais sans la partie "ABCD-" situé devant les données.
En gros le nouveau fichier sera composé comme ca :
données
données2
données3
(...)
Avez vous une idee de comment faire ?
Je vous remercie par avance pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- Julien Groizard
- Visiteur
il y a 2 ans 1 semaine #32685
par Julien Groizard
Réponse de Julien Groizard sur le sujet Recuperer informations dans un fichier .txt
Hello,
Je te confirme bien que la cmdlet à utiliser est Get-Content permettant d'afficher le contenu d'un fichier.
Par contre, le script sera relativement complexe selon moi car il faut récupérer des infos différentes à plusieurs instants (lignes).
Je te propose un script permettant de récupérer les différentes données compactées dans un tableau :
$file = Get-Content .\data.txt -Encoding UTF8
$datas = @{} # répertoire de donnée
$data = @() # données
$i=0
foreach ($line in $file) {
if ($line -like "*Données du serveur*") { #nouvelle donnée à enregistrer
# la première ligne on aura pas de donnée à entrer
if ($i) {
$datas.Add($i,$data)
$data = @()
}
$i++
} else {
$data += $line
}
}
# ajout des dernières valeurs
$datas.Add($i,$data)
#Donnée finale
$datas
$nb=1 #numéro de donnée
$datas.Item($nb) # données de serveur numéro $nb
Concernant l'autre script, c'est beaucoup plus simple car il s'agit de récupérer le contenu puis les renvoyer directement en remplaçant le texte "ABCD-" par rien :
$data=@()
Get-Content .\data2.txt -Encoding UTF8 | % {
$data+=($_ -replace "ABCD-","")
}
Write-Output $data > .\data2_new.txt
Il se peut que le premier script ne teste pas le "like" avec les accents. Il faut mettre le format du script en Windows 1252.
En espérant aider
Bonne journée à toi
Je te confirme bien que la cmdlet à utiliser est Get-Content permettant d'afficher le contenu d'un fichier.
Par contre, le script sera relativement complexe selon moi car il faut récupérer des infos différentes à plusieurs instants (lignes).
Je te propose un script permettant de récupérer les différentes données compactées dans un tableau :
$file = Get-Content .\data.txt -Encoding UTF8
$datas = @{} # répertoire de donnée
$data = @() # données
$i=0
foreach ($line in $file) {
if ($line -like "*Données du serveur*") { #nouvelle donnée à enregistrer
# la première ligne on aura pas de donnée à entrer
if ($i) {
$datas.Add($i,$data)
$data = @()
}
$i++
} else {
$data += $line
}
}
# ajout des dernières valeurs
$datas.Add($i,$data)
#Donnée finale
$datas
$nb=1 #numéro de donnée
$datas.Item($nb) # données de serveur numéro $nb
Concernant l'autre script, c'est beaucoup plus simple car il s'agit de récupérer le contenu puis les renvoyer directement en remplaçant le texte "ABCD-" par rien :
$data=@()
Get-Content .\data2.txt -Encoding UTF8 | % {
$data+=($_ -replace "ABCD-","")
}
Write-Output $data > .\data2_new.txt
Il se peut que le premier script ne teste pas le "like" avec les accents. Il faut mettre le format du script en Windows 1252.
En espérant aider
Bonne journée à toi
Connexion ou Créer un compte pour participer à la conversation.
- ClementG
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 2 ans 1 semaine - il y a 2 ans 1 semaine #32690
par ClementG
Réponse de ClementG sur le sujet Recuperer informations dans un fichier .txt
Merci pour ton retour !
J'ai bien compris que ma première demande était assez compliquée pour mon niveau de débutant sur powershell.
Cependant ton deuxième script est super efficace et compréhensible ! J'ai une petite question.
L'élément que je veux retirer est du type " ABC-ABCDEF\" et quand je remplace ton code par ce que je veux retirer j'ai un message d'erreur le "\" me genere ce message :
Le modèle d’expression régulière ABC-ABCDE\ n’est pas valide.
Au caractère \XX\XXX\XXXX\ mot.ps1:3 : 1
+ $data+=($_ -replace " ABC-ABCDE\","")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : ( ABC-ABCDE\:String) [], RuntimeException
+ FullyQualifiedErrorId : InvalidRegularExpression
Je sais pas si tu as une petite idée ? Je te remercie par avance
Bonne journée à toi,
J'ai bien compris que ma première demande était assez compliquée pour mon niveau de débutant sur powershell.
Cependant ton deuxième script est super efficace et compréhensible ! J'ai une petite question.
L'élément que je veux retirer est du type " ABC-ABCDEF\" et quand je remplace ton code par ce que je veux retirer j'ai un message d'erreur le "\" me genere ce message :
Le modèle d’expression régulière ABC-ABCDE\ n’est pas valide.
Au caractère \XX\XXX\XXXX\ mot.ps1:3 : 1
+ $data+=($_ -replace " ABC-ABCDE\","")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : ( ABC-ABCDE\:String) [], RuntimeException
+ FullyQualifiedErrorId : InvalidRegularExpression
Je sais pas si tu as une petite idée ? Je te remercie par avance
Bonne journée à toi,
Dernière édition: il y a 2 ans 1 semaine par ClementG.
Connexion ou Créer un compte pour participer à la conversation.
- Julien Groizard
- Visiteur
il y a 2 ans 1 semaine #32692
par Julien Groizard
Réponse de Julien Groizard sur le sujet Recuperer informations dans un fichier .txt
Hello,
Oui ! En effet le "\" peut poser problème car il fait partie des caractères d'expression régulières (comme []().\^$|?*+{} ).
On peut éviter ça en indiquant que ton texte sera sans Regex (Expression Régulière).
[regex]::escape('ABC-ABCDE\')
Le script sera alors :
$data=@()
Get-Content .\data2.txt -Encoding UTF8 | % {
$data+=($_ -replace [regex]::Escape(" ABC-ABCDE\"),"")
}
Write-Output $data > .\data2_new.txt
Je te mets 2 sources qui m'ont aidé à résoudre ce problème :
learn.microsoft.com/en-us/powershell/mod...#escaping-characters
Pour comprendre le fonctionnement de Regex : fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re
Bonne journée à toi
Oui ! En effet le "\" peut poser problème car il fait partie des caractères d'expression régulières (comme []().\^$|?*+{} ).
On peut éviter ça en indiquant que ton texte sera sans Regex (Expression Régulière).
[regex]::escape('ABC-ABCDE\')
Le script sera alors :
$data=@()
Get-Content .\data2.txt -Encoding UTF8 | % {
$data+=($_ -replace [regex]::Escape(" ABC-ABCDE\"),"")
}
Write-Output $data > .\data2_new.txt
Je te mets 2 sources qui m'ont aidé à résoudre ce problème :
learn.microsoft.com/en-us/powershell/mod...#escaping-characters
Pour comprendre le fonctionnement de Regex : fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re
Bonne journée à toi
Connexion ou Créer un compte pour participer à la conversation.
- ClementG
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 2 ans 1 semaine #32693
par ClementG
Réponse de ClementG sur le sujet Recuperer informations dans un fichier .txt
Hello,
Je te remercie pour ta réponse ! C'est TOP !
J'avais vu cette option sur internet, mais même avec les docs je n'arrivais pas à l'exploiter...
C'est fonctionnel !
Pour le premier script ou j'avais du mal, je n'oublie pas ton code et je vais dejà comprendre à 100% la notion de tableau, liste etc
Mais en tout cas merci pour ton aide
Bonne journée à toi,
Je te remercie pour ta réponse ! C'est TOP !
J'avais vu cette option sur internet, mais même avec les docs je n'arrivais pas à l'exploiter...
C'est fonctionnel !
Pour le premier script ou j'avais du mal, je n'oublie pas ton code et je vais dejà comprendre à 100% la notion de tableau, liste etc
Mais en tout cas merci pour ton aide
Bonne journée à toi,
Connexion ou Créer un compte pour participer à la conversation.
- Julien Groizard
- Visiteur
il y a 2 ans 1 semaine #32695
par Julien Groizard
Réponse de Julien Groizard sur le sujet Recuperer informations dans un fichier .txt
Avec plaisir
Tu peux en apprendre beaucoup sur la doc Microsoft :
learn.microsoft.com/fr-fr/powershell/scr...?view=powershell-7.2
learn.microsoft.com/fr-fr/powershell/scr...?view=powershell-7.2
Il faut, selon moi, au moins comprendre les @() et @{}
Ensuite tu pourras avoir plus de détails comme l'utilisation du [ordered]@{} pour l'organisation des lignes.
Tu peux en apprendre beaucoup sur la doc Microsoft :
learn.microsoft.com/fr-fr/powershell/scr...?view=powershell-7.2
learn.microsoft.com/fr-fr/powershell/scr...?view=powershell-7.2
Il faut, selon moi, au moins comprendre les @() et @{}
Ensuite tu pourras avoir plus de détails comme l'utilisation du [ordered]@{} pour l'organisation des lignes.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.111 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Recuperer informations dans un fichier .txt