Le Fri, 13 Jun 2003 00:45:16 +0200, jipe a écrit :

> nb d'éléments d'un tableau b: ${#b[*]}
> dernier élément du tableau b: ${b[${#b[*]}-1]}

Impec, ça je le note.

> avec grep ...
> 
> ligne1=$(grep -n chaine1 fichier); ligne1=${ligne1%%:*}
> ligne2=$(grep -n chaine2 fichier); ligne2=${ligne2%%:*}
> if ((ligne2>ligne1)); then
>       grep -A $((ligne2-ligne1)) chaine1 fichier
> elif ((ligne1>ligne2)); then
>       grep -A $((ligne1-ligne2)) chaine2 fichier
> else grep chaine1 fichier
> fi
> 
> faut juste être sur qu'il n'y a qu'une seule occurence possible de
> chaque chaine...sinon ça devient plus compliqué

Je me suis donc mal expliqué, une fois de plus.
chaine1 peut exister plusieurs fois ainsi que chaine2, mais j'ai toujours
un chaine2 qui suit un chaine1.
ex :
aaaa
chaine2
bbbb
cccc
chaine1
dddd
eeee
chaine2
ffff
gggg
chaine1
hhhh
chaine2

Moi, je veux :
dddd
eeee

Donc tout ce qui suit le premier chaine1, et qui est avant le chaine2
suivant.

Je pensais effectivement à grep avec des options du genre du -A, ou -B.
(j'ai bien dit "du genre" car je sais bien à quoi elles servent)

Ou alors, de pouvoir récupérer le numéro de ligne de chaine1, celui de
chaine2, et de prendre, à l'aide de -B toutes les lignes
$(($ligne_chaine2-$ligne_chaine1)) suivant chaine1.

Suis-je plus clair cette fois ?
Mais je crois que c'est ce que fais ta proposition que je vais étudier
plus en détail, je ne connaissais pas le grep -n.

grep permet t'il une recherche à partir d'une certaine ligne au lieu du
début du fichier ?

-- 
Christophe PEREZ


Vous souhaitez acquerir votre Pack ou des Services MandrakeSoft?
Rendez-vous sur "http://www.mandrakestore.com";.

Foire Aux Questions de la liste : http://mdk.mondelinux.org

Répondre à