expression regulière sur longueur chaine [ksh] - Shell/Batch - Programmation
Marsh Posté le 24-04-2009 à 17:33:15
Je me réponds à moi même, je n'avais pas bien cherché :
Il faut utiliser une regexp de ce type là :
[A-Z]{6}[0-9]{4}
et je remplace [0-9] par $var la valeur à rechercher. C'était tout simple lol
Marsh Posté le 28-05-2009 à 16:30:24
Besoin d'aide en fait !
Ca ne fonctionne pas exactement comme je l'espérais.
Voici l'expression
Code :
|
Le soucis étant qu'il me trouve toutes les expressions qui match mais même si $var est dans le désordre, ce qui ne va plus du tout !
Marsh Posté le 28-05-2009 à 17:34:45
Si tu recherches que $var, remplace "[${var}]{4}" par "$var"
Marsh Posté le 28-05-2009 à 17:48:57
J'ai essayé déjà mais ça ne fonctionne pas non plus, il ne match rien
Marsh Posté le 28-05-2009 à 22:00:09
use perl luke
si t'en es à te trainer du ksh, t'aurais jamais un GNU grep, alors autant utiliser un vrai outil.
Marsh Posté le 30-05-2009 à 19:59:04
Tonio94 a écrit : Besoin d'aide en fait !
|
Code :
|
Taz a écrit : use perl luke |
Et s'il ne connait pas le perl ? C'est pas bien malin de lui dire "recommence tout à zéro dans un autre langage" sans même lui donner la moindre indication sur la façon de le résoudre dans ledit langage. De plus, s'il l'a fait en ksh c'est qu'il a probablement besoin de le faire en ksh. Par ailleurs même si son grep ne sait pas gérer les regexp, c'est tout à fait possible de le résoudre autrement et toujours en ksh.
Ceci dit, (pour Tonio94), si t'as l'occasion de te mettre à Perl ou Python ou Ruby, n'hésite pas. Ce sont des langages à la fois souples mais nettement plus puissants que le shell (perso je préfère Python)
Marsh Posté le 31-05-2009 à 10:22:05
Sve@r a écrit :
|
Sve@r a écrit : |
Apprendre un bout de perl, ça risque d'être plus jouable que d'installer GNU perl sur tout un parc de serveurs de productions ... comme je le disais. J'ai ce problème tous les jours, et perl, par sa présence par tout, même sur les unix à la con, c'est le shell le plus portable au monde.
Marsh Posté le 03-06-2009 à 13:53:39
Oui bien vu Sve@r et Taz, c'est bien ça la regexp. Je l'avais trouvé entre temps c'était tout bête mais je n'ai pas pris le temps de la poster.
Donc c'est bien ça :
Code :
|
Je connais Perl mais ne le maitrise pas, cela ne m'empêche nullement d'utiliser un bout de code en Perl dans mes scripts, quand cela est justifié bien entendu, c'est à dire soit au niveau pratique soit au niveau performance et comme effectivement il est présent partout...
Ruby je connais mais il faut le déployer, c'est l'inconvénient, tout comme Python j'imagine.
Marsh Posté le 07-06-2009 à 10:36:48
Tonio94 a écrit : Ruby je connais mais il faut le déployer, c'est l'inconvénient, tout comme Python j'imagine. |
Non, Python 2.5 est intégré dans toutes les distrib Linux actuelles.
Marsh Posté le 24-04-2009 à 17:16:42
Bonjour,
J'ai des fichiers qui se présentent sous cette forme :
ABCDEF1508GV12AW090423200138.FILE
En rouge c'est l'information que je parse et que j'utilise dans mon script. Ensuite dans mon traitement je fais ceci à un moment :
Mais parfois je tombe sur des fichiers qui peuvent contenir la chaine parsée (ici dans l'exemple "1508" ) ailleurs dans le nom du fichier mais pas à l'emplacement où je suis censé le parser. Du coup le grep renvoie 0 pour "one or matches found" et ça me pose problème.
Exemple : ABCDEF2122GV12AW090423150838.FILE
Je connais un peu les expressions régulières mais je n'ai pas trouvé de quoi faire ce que je souhaitais. Il faudrait que je puisse spécifier la chaine à rechercher en précisant le nombre de caractères avant et après. Sachant que la longueur du nom du fichier est fixe.
Merci d'avance pour votre aide!
Message édité par Tonio94 le 24-04-2009 à 17:33:42