Script

Script - Linux et OS Alternatifs

Marsh Posté le 01-10-2002 à 18:25:39    

hellop
 
qq a une idée sur un egrep ou sed ou autre suprimant toutes les lignes ou un nombre est inferieur à un nombre donné ?
 
....

Reply

Marsh Posté le 01-10-2002 à 18:25:39   

Reply

Marsh Posté le 01-10-2002 à 18:29:26    

head ?

Reply

Marsh Posté le 01-10-2002 à 18:40:45    

je me réexplique, dans un fichier j'ai un nombre à chaque ligne et je voudais garder uniquement les lignes contenant ce nombre inferieurs (ou supèrieur) à un nombre donné
 
... je sais pas si c'est plouclair

Reply

Marsh Posté le 01-10-2002 à 18:48:07    

buchu a écrit a écrit :

je me réexplique, dans un fichier j'ai un nombre à chaque ligne et je voudais garder uniquement les lignes contenant ce nombre inferieurs (ou supèrieur) à un nombre donné
 
... je sais pas si c'est plouclair




 
oui bah head devrait pouvoir t'aider
man head

Reply

Marsh Posté le 01-10-2002 à 19:04:41    

in=$1
out=toto
max=50  
 
for i in `cat $in`; do [ $i -lt $max ] && echo $i >> $out; done

Reply

Marsh Posté le 02-10-2002 à 10:46:07    

merci :)
 
mais malheureusement je n'ai pas qu'un nombre sur la ligne, j'ai aussi du texte...
 
j'avais pensé à un egrep '[20000-30000]' pour choper toutes les lignes entre 20000 et 30000 mais ca marche pas...
 
casse couille comme truc ;)

Reply

Marsh Posté le 02-10-2002 à 10:50:52    

gawk est ton ami ;)
 
avec les expressions regulieres ca doit etre envisageable :D

Reply

Marsh Posté le 02-10-2002 à 11:27:44    

Avec n=10 :
 
perl -ne 'print if (/(\d+)/ && $1>10)'
 
edit : en supposant qu'il n'y ait qu'un seul nombre par ligne.
C'est difficile de répondre à une question qui est mal posée...


Message édité par arsunik le 02-10-2002 à 11:29:16
Reply

Marsh Posté le 02-10-2002 à 12:13:33    

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

Reply

Marsh Posté le 02-10-2002 à 17:06:51    

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 :D

Reply

Marsh Posté le 02-10-2002 à 17:06:51   

Reply

Marsh Posté le 04-10-2002 à 12:10:50    


un peu tard mais merci beaucoup  !! :jap:

Reply

Sujets relatifs:

Leave a Replay

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