Question
Chaines alphanumériques (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 5 mois #1206
par didine
NEWTON_
Chaines alphanumériques (Résolu) a été créé par didine
JANEL , ARNAUD
Décidément mes nuit blanches ne sont pas terminées
Le script[code:1]get-content c:\test.txt -delimiter \"[END]\" |
select-string \"[GR][GRP]\"|select-string \"POLYLINE\" |
foreach {$_ -replace \"Type=.*\",\"Type=0x13 \"} |
set-content -encoding ASCII c:\rest.txt [/code:1]
accepte
Dans la recherche select-string \"[GR][GRP]\"
les chaines \"GRES\" ou \"LA GRANDE \"
or
il ne doit prendre que
des GR ou GRP avec ou sans chiffres
par exemple GR56 ou GR , GRP37
je deviens fou !!!
Passionnément difficile !
Pourtant je me suis équipé de PowerShellIDE
mais bon ...
comment dire au script
une chaine \"GRxxx\" où ce qui suit GR est OBLIGATOIREMENT un chiffre ou 2 ou 3
je joint le fichier test
MERCI
Message édité par: newt, à: 20/10/07 04:50
Message édité par: newt, à: 20/10/07 04:52
Message édité par: newt, à: 20/10/07 04:54<br><br>Message édité par: Arnaud, à: 30/11/07 10:05
Décidément mes nuit blanches ne sont pas terminées
Le script[code:1]get-content c:\test.txt -delimiter \"[END]\" |
select-string \"[GR][GRP]\"|select-string \"POLYLINE\" |
foreach {$_ -replace \"Type=.*\",\"Type=0x13 \"} |
set-content -encoding ASCII c:\rest.txt [/code:1]
accepte
Dans la recherche select-string \"[GR][GRP]\"
les chaines \"GRES\" ou \"LA GRANDE \"
or
il ne doit prendre que
des GR ou GRP avec ou sans chiffres
par exemple GR56 ou GR , GRP37
je deviens fou !!!
Passionnément difficile !
Pourtant je me suis équipé de PowerShellIDE
mais bon ...
comment dire au script
une chaine \"GRxxx\" où ce qui suit GR est OBLIGATOIREMENT un chiffre ou 2 ou 3
je joint le fichier test
MERCI
La pièce jointe test.txt est absente ou indisponible
Message édité par: newt, à: 20/10/07 04:50
Message édité par: newt, à: 20/10/07 04:52
Message édité par: newt, à: 20/10/07 04:54<br><br>Message édité par: Arnaud, à: 30/11/07 10:05
NEWTON_
Pièces jointes :
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 5 mois #1207
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:CHAINES ALPHANUMERIQUES
Ah oui, attention: par défaut, select-string prend une expression régulière comme argument, pas un simple texte littéral.
Une expression régulière est une chaîne construite de manière à indiquer des critères qu'on va appliquer au texte fourni en paramètre. Ces critères vont permettre d'extraire des bouts du texte et de vérifier s'ils correspondent à ce qu'on cherche, ou éventuellement de remplacer ces bouts de texte par un autre texte. La différence avec un texte littéral c'est que ces critères vont bien au-delà de la simple correspondance de lettre à lettre. Il y a toute une syntaxe qu'il faut connaître pour ne pas faire d'erreur.
Dans ton cas, l'expression régulière \"[GR][GRP]\" ne fait pas du tout ce que tu imagines: quand tu mets des caractères entre crochets, PowerShell va considérer comme valable tout texte qui contient au moins un des caractères entre les crochets. En l'occurrence, tout texte qui contient un G ou un R, suivi d'un G, d'un R ou d'un P.
Le critère de recherche que tu veux (tout texte qui contient GR suivi de deux ou trois chiffres) pourra s'écrire ainsi:
select-string \"GR\d{2,3}\"
\d correspond à un chiffre (d pour digit en anglais).
{2,3} veut dire qu'on cherche de 2 à 3 occurrences du caractère précédent, \d en l'occurrence.
Si tu veux plus d'infos sur les expressions régulières (et tu en auras besoin souvent pour faire des manipulations avancées sur les chaînes dans PowerShell), tu peux consulter de nombreux sites - les expressions régulières existaient bien avant PowerShell, c'est un standard très répandu. Le site MSDN de Microsoft a une section qui lui est consacrée (en anglais malheureusement):
msdn2.microsoft.com/en-us/library/1400241x.aspx
Tiens-nous au courant,
Janel
Une expression régulière est une chaîne construite de manière à indiquer des critères qu'on va appliquer au texte fourni en paramètre. Ces critères vont permettre d'extraire des bouts du texte et de vérifier s'ils correspondent à ce qu'on cherche, ou éventuellement de remplacer ces bouts de texte par un autre texte. La différence avec un texte littéral c'est que ces critères vont bien au-delà de la simple correspondance de lettre à lettre. Il y a toute une syntaxe qu'il faut connaître pour ne pas faire d'erreur.
Dans ton cas, l'expression régulière \"[GR][GRP]\" ne fait pas du tout ce que tu imagines: quand tu mets des caractères entre crochets, PowerShell va considérer comme valable tout texte qui contient au moins un des caractères entre les crochets. En l'occurrence, tout texte qui contient un G ou un R, suivi d'un G, d'un R ou d'un P.
Le critère de recherche que tu veux (tout texte qui contient GR suivi de deux ou trois chiffres) pourra s'écrire ainsi:
select-string \"GR\d{2,3}\"
\d correspond à un chiffre (d pour digit en anglais).
{2,3} veut dire qu'on cherche de 2 à 3 occurrences du caractère précédent, \d en l'occurrence.
Si tu veux plus d'infos sur les expressions régulières (et tu en auras besoin souvent pour faire des manipulations avancées sur les chaînes dans PowerShell), tu peux consulter de nombreux sites - les expressions régulières existaient bien avant PowerShell, c'est un standard très répandu. Le site MSDN de Microsoft a une section qui lui est consacrée (en anglais malheureusement):
msdn2.microsoft.com/en-us/library/1400241x.aspx
Tiens-nous au courant,
Janel
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 5 mois #1209
par didine
NEWTON_
Réponse de didine sur le sujet Re:CHAINES ALPHANUMERIQUES
JANEL
Avec tes conseils je suis parvenu
à ce code:
[code:1]
get-content c:\mhd\test.txt -delimiter \"[END]\" |select-string \"GR\d|GRP\"
c:\mhd\GRrest.txt
[/code:1]
Sur 50 lignes
apparemment il bloque \"GRAND\",\"AGRES\",
Peux tu me traduire en mot
ce que tu lis dans ce code ?
Ainsi je verrais si cela correspond à mon but
Merci
RECTIF !!!
JE crois que le bon c'est
[code:1]select-string \"GR\d|GRP|GR\s\"[/code:1]
Seule une \"traduction\" peut m'aider beaucoup
Message édité par: newt, à: 20/10/07 14:05
Message édité par: newt, à: 20/10/07 14:07<br><br>Message édité par: newt, à: 20/10/07 14:08
Avec tes conseils je suis parvenu
à ce code:
[code:1]
get-content c:\mhd\test.txt -delimiter \"[END]\" |select-string \"GR\d|GRP\"
c:\mhd\GRrest.txt
[/code:1]
Sur 50 lignes
apparemment il bloque \"GRAND\",\"AGRES\",
Peux tu me traduire en mot
ce que tu lis dans ce code ?
Ainsi je verrais si cela correspond à mon but
Merci
RECTIF !!!
JE crois que le bon c'est
[code:1]select-string \"GR\d|GRP|GR\s\"[/code:1]
Seule une \"traduction\" peut m'aider beaucoup
Message édité par: newt, à: 20/10/07 14:05
Message édité par: newt, à: 20/10/07 14:07<br><br>Message édité par: newt, à: 20/10/07 14:08
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 5 mois #1210
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:CHAINES ALPHANUMERIQUES
Il me semble que ça veut dire :
GR suivi d’un chiffre
ou
GRP
ou
GR suivi de rien (c’est-à-dire d’un espace, d’une tabulation ou d’une fin de ligne)
Ca m'a l'air correct, non?
Janel
GR suivi d’un chiffre
ou
GRP
ou
GR suivi de rien (c’est-à-dire d’un espace, d’une tabulation ou d’une fin de ligne)
Ca m'a l'air correct, non?
Janel
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 5 mois #1211
par didine
NEWTON_
Réponse de didine sur le sujet Re:CHAINES ALPHANUMERIQUES
Merci Janel
pour la traduction \"litterale\" c'est bien ce que je voulais
Et en cherchant dans la caverne \"d'ali baba'' , ton blog
j'ai du mal avec set-content et foreach
le but est d'appliquer à tous les fichiers (*.txt) d'un répertoire
une procédure , un script en fait ,(qui génère un .txt pour chaque fichier source)
en faisant en sorte que les fichiers d'arrivé aient chacun leur nom ,.
C'est pas très clair
par exemple
t102.txt > s102.txt
t204.txt > s204.txt
t542.txt > s542.txt
Perso j'ai réussi çà
[code:1]get-content c:\mhd\*.txt -delimiter \"[END]\" |select-string \"GR\d|GRP|GR\s\"|
set-content -encoding ASCII c:\mhd\TsGR.txt [/code:1]
mais pour la fin ils parviennent tous dans le même fichier ....pas bon
Merci
pour la traduction \"litterale\" c'est bien ce que je voulais
Et en cherchant dans la caverne \"d'ali baba'' , ton blog
j'ai du mal avec set-content et foreach
le but est d'appliquer à tous les fichiers (*.txt) d'un répertoire
une procédure , un script en fait ,(qui génère un .txt pour chaque fichier source)
en faisant en sorte que les fichiers d'arrivé aient chacun leur nom ,.
C'est pas très clair
par exemple
t102.txt > s102.txt
t204.txt > s204.txt
t542.txt > s542.txt
Perso j'ai réussi çà
[code:1]get-content c:\mhd\*.txt -delimiter \"[END]\" |select-string \"GR\d|GRP|GR\s\"|
set-content -encoding ASCII c:\mhd\TsGR.txt [/code:1]
mais pour la fin ils parviennent tous dans le même fichier ....pas bon
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 5 mois #1213
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:CHAINES ALPHANUMERIQUES
En fait, tu dois raisonner un peu différemment dès le début de la commande:
Commence par énumérer les fichiers dont tu as besoin, et ensuite pour chaque fichier tu vas appliquer tes opérations: recherche du texte qui va bien, remplacement d'une partie du texte, et sauvegarde dans un nouveau fichier.
Ca donne quelque chose comme ça (non testé, mais ça devrait le fait à peu de choses près):
[code:1]
dir c:\mhd\t*.txt | foreach {
get-content $_ -delimiter \"[END]\" |
select-string \"GR\d|GRP|GR\s\" |
set-content -encoding ASCII ($_.name -replace \"t(.+)\.txt\",\"s$+.txt\"«»)
}[/code:1]
Ici, j'ai juste pris l'exemple où tu as des fichiers texte qui commencent par 't' et où tu veux les sauvegarder avec un nom qui commence par 's'. A adapter selon ton besoin réel.
Janel
Commence par énumérer les fichiers dont tu as besoin, et ensuite pour chaque fichier tu vas appliquer tes opérations: recherche du texte qui va bien, remplacement d'une partie du texte, et sauvegarde dans un nouveau fichier.
Ca donne quelque chose comme ça (non testé, mais ça devrait le fait à peu de choses près):
[code:1]
dir c:\mhd\t*.txt | foreach {
get-content $_ -delimiter \"[END]\" |
select-string \"GR\d|GRP|GR\s\" |
set-content -encoding ASCII ($_.name -replace \"t(.+)\.txt\",\"s$+.txt\"«»)
}[/code:1]
Ici, j'ai juste pris l'exemple où tu as des fichiers texte qui commencent par 't' et où tu veux les sauvegarder avec un nom qui commence par 's'. A adapter selon ton besoin réel.
Janel
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.094 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Chaines alphanumériques (Résolu)