buchu a écrit a écrit :
bon je vais faire du concret
j'ai un fichier :
456546 blalalalalalalalal
456548 blbllbaaa
456549 blolboblbo
456550 balalalal
456555 blibliblbi
et je voudrais garder que es lignes comprises entre 456548 et 456550
voiloiu
|
j'imagine qu'en maitrisant perl , ça pourrait être plus condensé mais voici ma version (testée) :
# on inscrit dans un fichier numero de ligne:valeur numerique
grep -n "^[0-9]\+" nbr | awk '{print $1}' > nbr2
# on parse ce fichier temporaire (nbr2) et on compare les valeurs par rapport au min et max voulus et on inscrit les 'bonnes' lignes dans un autre fichier temporaire (nbr3)
for i in `cat nbr2`;do nb=`echo $i | cut -f2 -d:`; ln=`echo $i | cut -f1 -d:`; [ $nb -gt $min ] && [ $nb -lt $max ] && echo $ln >> nbr3 ;done
# maintenant qu'on a les occurences , il faut extraire les lignes du fichier originel
for i in `cat nbr3`;do cat nbr | head -$i | tail -1 >> final; done
ca tourne mais c'est un peu 'lourd'. En perl ça doit pas etre mal je pense mais j'en ai pas les moyens