Question
Recherche de chaines (Résolu)
- didine
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 16 ans 6 mois #1150
par didine
NEWTON_
Recherche de chaines (Résolu) a été créé par didine
Janel et à tous merci pour la lancée
voici un résumé
1:Le fichier comporte plus de 540 fois des lignes du type...
[code:1]
[POLYGONE]
Type=0x3
Label=D44
Data2=(49.19952,2.47982),(49.20021,2.47570),(49.20090,2.47501)
[END]
[POLYLINE]
Type=0x3
Data2=(49.19334,2.46883),(49.19334,2.47089)
[END]
[POLYLINE]
Type=0x3
Label=D924A GR11
Data2=(49.19128,2.48531),(49.19266,2.48394),(49.19437,2.47913)
[END]
[POLYLINE]
Type=0x3
Label=D924 GR11
Data2=(49.19437,2.47913),(49.19472,2.47982),(49.19540,2.47982),(49.19540,2.47913),(49.19678,2.47810)
[END][/code:1]
2: Moi je veux conserver ou extraire que celles du type
[code:1][POLYLINE]
Type=0x3
Label=D924A GR11
Data2=(49.19128,2.48531),(49.19266,2.48394),(49.19437,2.47913)
[END][/code:1]
3:j'ai essayé
[code:1]get-content test.txt -delimiter \"[END]\" | select-string \"GR$[END]\" >C:\Res.txt
puis
get-content test.txt -delimiter \"[END]\" | select-string \"[POLYLINE]GR$[END]\" >C:\Res.txt
puis
get-content test.txt -delimiter \"[END]\" | where {$_.split(\"`n\"«»)[-2].trim() -match \"GR$\"}[/code:1]
Mais rien à faire çà \"mouline\" mais quand je lis Rest.txt (il est vide)ou test.txt(rien à changé)
Pourriez Vous me dire si c'est pas mieux
pour un débutant comme moi de passer par python
j'ai même voulu passer par ma HP49 en découpant le fichier d'abord...
Mais je veux persévérer , je continue mes recherche google ,get help....
peut être ce sera plus facile ........pour moi avec python ou autre si Vous connaisser
MERCI<br><br>Message édité par: Arnaud, à: 16/10/07 13:21
voici un résumé
1:Le fichier comporte plus de 540 fois des lignes du type...
[code:1]
[POLYGONE]
Type=0x3
Label=D44
Data2=(49.19952,2.47982),(49.20021,2.47570),(49.20090,2.47501)
[END]
[POLYLINE]
Type=0x3
Data2=(49.19334,2.46883),(49.19334,2.47089)
[END]
[POLYLINE]
Type=0x3
Label=D924A GR11
Data2=(49.19128,2.48531),(49.19266,2.48394),(49.19437,2.47913)
[END]
[POLYLINE]
Type=0x3
Label=D924 GR11
Data2=(49.19437,2.47913),(49.19472,2.47982),(49.19540,2.47982),(49.19540,2.47913),(49.19678,2.47810)
[END][/code:1]
2: Moi je veux conserver ou extraire que celles du type
[code:1][POLYLINE]
Type=0x3
Label=D924A GR11
Data2=(49.19128,2.48531),(49.19266,2.48394),(49.19437,2.47913)
[END][/code:1]
3:j'ai essayé
[code:1]get-content test.txt -delimiter \"[END]\" | select-string \"GR$[END]\" >C:\Res.txt
puis
get-content test.txt -delimiter \"[END]\" | select-string \"[POLYLINE]GR$[END]\" >C:\Res.txt
puis
get-content test.txt -delimiter \"[END]\" | where {$_.split(\"`n\"«»)[-2].trim() -match \"GR$\"}[/code:1]
Mais rien à faire çà \"mouline\" mais quand je lis Rest.txt (il est vide)ou test.txt(rien à changé)
Pourriez Vous me dire si c'est pas mieux
pour un débutant comme moi de passer par python
j'ai même voulu passer par ma HP49 en découpant le fichier d'abord...
Mais je veux persévérer , je continue mes recherche google ,get help....
peut être ce sera plus facile ........pour moi avec python ou autre si Vous connaisser
MERCI<br><br>Message édité par: Arnaud, à: 16/10/07 13:21
NEWTON_
Connexion ou Créer un compte pour participer à la conversation.
- didine
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 16 ans 6 mois #1151
par didine
NEWTON_
Réponse de didine sur le sujet Re:RECHERCHE DE CHAINES
MERCI A TOUS
MERCI JANEL
Çà avance !!!!
[code:1]
get-content test1.txt
puis
$test1 | where {$_ -match \"GR\"} >C:\Rest.txt[/code:1]
envoie le résultat attendu dans Rest.txt
Il a fallu que je prenne qu'un petit bout
de test.txt qui était trop gros
C(est dans ce forum que j'ai trouvé la motivation
Maintenant
comment lui dire de faire la boucle
jusqu'à traiter l'ensemble du test.txt ?
le diviser puis faire une boucle ?
MERCI
MERCI JANEL
Çà avance !!!!
[code:1]
get-content test1.txt
puis
$test1 | where {$_ -match \"GR\"} >C:\Rest.txt[/code:1]
envoie le résultat attendu dans Rest.txt
Il a fallu que je prenne qu'un petit bout
de test.txt qui était trop gros
C(est dans ce forum que j'ai trouvé la motivation
Maintenant
comment lui dire de faire la boucle
jusqu'à traiter l'ensemble du test.txt ?
le diviser puis faire une boucle ?
MERCI
NEWTON_
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 6 mois #1152
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:RECHERCHE DE CHAINES
Est-ce que ça, ça te convient?
[code:1]
get-content test.txt -delimiter \"[END]\" | select-string \"GR\" > test2.txt[/code:1]
En décomposant:
[code:1]get-content test.txt -delimiter \"[END]\"[/code:1]
.. découpe le fichier test.txt en blocs de texte se terminant par \"[END]\". Chaque bloc retourné est passé sous forme d'une seule chaîne de caractères.
[code:1] | select-string \"GR\"[/code:1]
.. pour chaque chaîne (bloc) passée par get-content, cherche la présence du texte \"GR\". Seules les chaînes qui contiennent ce texte sont retournées.
[code:1] > test2.txt[/code:1]
.. récupère le résultat dans un fichier test2.txt.
La subtilité de l'opération tient dans l'utilisation de -delimiter. En effet, ce que tu veux c'est récupérer plusieurs lignes d'un fichier à la fois (toutes les lignes d'un bloc [POLYxxx] ... [END] si ce bloc contient \"GR\"). Or, par défaut get-content ne traite qu'une ligne à la fois ce qui obligerait à stocker/mémoriser les lignes d'un bloc au fur et à mesure. Or, -delimiter retourne chaque bloc comme une seule chaîne; on peut donc y appliquer directement un select-string (ou un -match, le résultat serait identique).
Janel
[code:1]
get-content test.txt -delimiter \"[END]\" | select-string \"GR\" > test2.txt[/code:1]
En décomposant:
[code:1]get-content test.txt -delimiter \"[END]\"[/code:1]
.. découpe le fichier test.txt en blocs de texte se terminant par \"[END]\". Chaque bloc retourné est passé sous forme d'une seule chaîne de caractères.
[code:1] | select-string \"GR\"[/code:1]
.. pour chaque chaîne (bloc) passée par get-content, cherche la présence du texte \"GR\". Seules les chaînes qui contiennent ce texte sont retournées.
[code:1] > test2.txt[/code:1]
.. récupère le résultat dans un fichier test2.txt.
La subtilité de l'opération tient dans l'utilisation de -delimiter. En effet, ce que tu veux c'est récupérer plusieurs lignes d'un fichier à la fois (toutes les lignes d'un bloc [POLYxxx] ... [END] si ce bloc contient \"GR\"). Or, par défaut get-content ne traite qu'une ligne à la fois ce qui obligerait à stocker/mémoriser les lignes d'un bloc au fur et à mesure. Or, -delimiter retourne chaque bloc comme une seule chaîne; on peut donc y appliquer directement un select-string (ou un -match, le résultat serait identique).
Janel
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.065 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Recherche de chaines (Résolu)