partie de liste - Perl - Programmation
Marsh Posté le 27-09-2007 à 14:50:06
pas exactement compris ce que tu voulais  
 
tu veux récupérer uniquement les colonnes 2,3 et 4 de ton tableau? 
| Code : 
 | 
 
ou alors tu veux récupérer uniquement les elements de ton tableau dont la valeur est comprise entre bX et dX? 
A ce moment là regarde le post juste en dessous du tien et sers toi de map: 
http://forum.hardware.fr/hfr/Progr [...] 8234_1.htm 
Marsh Posté le 27-09-2007 à 15:14:45
Le truc que tu donnes en awk ne fait pas du tout ce que tu expliques en français. Ton morceau de awk il affiche toutes les lignes d'entrée comprise entre la première ligne qui contient un b, et la première ligne suivante qui contient un d. Rien à voir avec des listes. 
 
Pour les listes, anapajari a répondu. Pour l'équivalent de ton morceau de awk, en perl ça donne : 
| perl -ne '(/b/ .. /d/) && print' | 
Marsh Posté le 27-09-2007 à 15:22:06
| anapajari a écrit : pas exactement compris ce que tu voulais  
   | 
merci pour ta réponse express   
  
 
non en fait les premier et dernier élément de la sous liste contiennent un certain élément 
 
par exemple avec la liste: 
 
un deux 
trois quatre 
cinq six 
sept huit 
neuf dix 
onze douze 
 
je voudrais obtenir la partie de la liste contenue entre la ligne contenant "cinq" et la ligne contenant "dix", ce qui donne: 
 
cinq six 
sept huit 
neuf dix 
  
avec awk ça donnerait awk '/cinq/../dix/ {print $0}' 
 
map ne me sert pas pour les éléments "entre" les 2 lignes 
 
je voudrais y arriver sans faire de boucle...
Marsh Posté le 27-09-2007 à 15:51:51
| matafan a écrit : Le truc que tu donnes en awk ne fait pas du tout ce que tu expliques en français. Ton morceau de awk il affiche toutes les lignes d'entrée comprise entre la première ligne qui contient un b, et la première ligne suivante qui contient un d. Rien à voir avec des listes.  
 | 
tout à fait je m'a trompé   
  
 
encore désolé, c'est bien /b/ .. /d/, etsinon vous auriez une solution ?   
Marsh Posté le 27-09-2007 à 16:13:21
nan mais attends, en fait tu as pas une "liste" mais un fichier que tu lis c'est bien ça?
En fait je suis a peu près sur que tu as une liste uniquement parce que tu as bourriné un petit
| Code : 
 | 
Et en fait tu veux le "morceau" de texte entre les deux mots, sous la forme d'un array par ligne non?
Je suis pas sur que tu prennes le problèmes par le bon bout, mais tu peux toujours faire un truc dans le genre:
| Code : 
 | 
Marsh Posté le 27-09-2007 à 16:24:34
| anapajari a écrit : nan mais attends, en fait tu as pas une "liste" mais un fichier que tu lis c'est bien ça?  
   
   | 
OK ça marche   
  
 
c le justement le cas d'une liste qui m'intéresse, pour un texte je sais qu'il y a plus simple. 
je pensais qu'il y avait un équivalent aussi simple que la commande awk "/a/../b/" mais apparemment c pas le cas 
 
encore merci ! 
Marsh Posté le 27-09-2007 à 18:53:18
Ah ben dans ce cas, si, il y a plus simple : 
| my @sousListe = grep { (/cinq/ .. /dix/) } @liste; | 
Marsh Posté le 27-09-2007 à 19:52:51
| matafan a écrit : Ah ben dans ce cas, si, il y a plus simple :  
 | 
![[:athome] [:athome]](https://forum-images.hardware.fr/images/perso/athome.gif)
| Spoiler : je suis un  | 
 
Marsh Posté le 28-09-2007 à 09:29:21
| matafan a écrit : Ah ben dans ce cas, si, il y a plus simple :  
 | 
 
  j'ai trop pas le reflexe de me service de grep.
 j'ai trop pas le reflexe de me service de grep.
Marsh Posté le 27-09-2007 à 14:42:56
bonjour,
est-ce qu'il existe en perl un moyen simple d'obtenir la sous liste (b2 c3 d4) de la liste (a1 b2 c3 d4 e5) en spécifiant juste b et d par exemple ?
en awk c'est un truc du genre: awk '/b/,/d/ {print $0}'