Question Recherche de chaines (Résolu)

Plus d'informations
il y a 16 ans 6 mois #1150 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

NEWTON_

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

Plus d'informations
il y a 16 ans 6 mois #1151 par didine
Réponse de didine sur le sujet Re:RECHERCHE DE CHAINES
MERCI A TOUS
MERCI JANEL
Çà avance !!!!:woohoo:

[code:1]
get-content test1.txt

puis

$test1 | where {$_ -match \&quot;GR\&quot;} &gt;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



:woohoo:

NEWTON_

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

Plus d'informations
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 \&quot;[END]\&quot; | select-string \&quot;GR\&quot; &gt; test2.txt[/code:1]
En décomposant:

[code:1]get-content test.txt -delimiter \&quot;[END]\&quot;[/code:1]
.. découpe le fichier test.txt en blocs de texte se terminant par \&quot;[END]\&quot;. Chaque bloc retourné est passé sous forme d'une seule chaîne de caractères.

[code:1] | select-string \&quot;GR\&quot;[/code:1]
.. pour chaque chaîne (bloc) passée par get-content, cherche la présence du texte \&quot;GR\&quot;. Seules les chaînes qui contiennent ce texte sont retournées.

[code:1] &gt; 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 \&quot;GR\&quot;). 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
Propulsé par Kunena