[KSH] substring - expressions régulières - ${i%toto}

substring - expressions régulières - ${i%toto} [KSH] - Shell/Batch - Programmation

Marsh Posté le 27-06-2006 à 16:50:43    

Hello, j'ai un soucis sous KSH.
 
J'ai une variable i mettons qui vaut la chose suivante :
 

Code :
  1. i="H_TOTO________d"


 
Je veux juste récupérer H_TOTO sachant que j'ai toujours un d à la fin et 0..n "_" entre TOTO et d. "TOTO" est une chaîne d'au moins 1 caractère.
 
Je sais qu'on peut y arriver avec un truc du genre
 

Code :
  1. echo ${i%*_d}


 
Mais je ne sais pas formatter autour du _ pour lui dire 0..n.
 
Vous avez des idées ?


Message édité par Toxin le 27-06-2006 à 16:57:00

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 27-06-2006 à 16:50:43   

Reply

Marsh Posté le 27-06-2006 à 17:04:12    

je verrais un truc du genre +_d pour les multi _


Message édité par darxmurf le 27-06-2006 à 17:04:47

---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 27-06-2006 à 17:07:51    

C'est bon j'ai fini par trouver tout seul (ça fait quand même une bonne heure que je suis dessus) :
 

Code :
  1. echo ${i%%*(_)d}


 
Avec un seul % il cherche le plus petit motif de (_) c'est à dire 0 puisque * c'est 0..n. Il faut donc mettre %% pour lui dire de tronquer le plus grand motif possible.
 
Ouf :'(
 
Merci quand même :)


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 27-06-2006 à 17:08:51    

oups j'avais mal lu j'ai cru qu'il y avait 1..n pout les _


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 29-06-2006 à 21:07:48    

Toxin a écrit :

C'est bon j'ai fini par trouver tout seul (ça fait quand même une bonne heure que je suis dessus) :
 

Code :
  1. echo ${i%%*(_)d}


 
Avec un seul % il cherche le plus petit motif de (_) c'est à dire 0 puisque * c'est 0..n. Il faut donc mettre %% pour lui dire de tronquer le plus grand motif possible.
 
Ouf :'(
 
Merci quand même :)


 
 
moi je t'aurais sorti un truc plus degueu avec du "sed"
 
bravo.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed