[shell] Recherche dans un fichier

Recherche dans un fichier [shell] - Linux et OS Alternatifs

Marsh Posté le 11-01-2006 à 10:55:50    

Bonjour je voudrais savoir si quelqu un peut m aider pour un script qui récupère la fin d'un fichier à partir d'un caractère donné  
 
J'ai beau regarder je ne trouve que pour faire une recherche sur une chaine de caractère mais pour la ligne simplement cela ne récupère pas la fin du fichier pour le mettre dans un autre fichier
 
si vous avez des conseils ou idée a ce sujet merci

Reply

Marsh Posté le 11-01-2006 à 10:55:50   

Reply

Marsh Posté le 11-01-2006 à 12:06:59    

un conseil, pas forcément celui que tu attends: faire un petit exécutable en c, que tu appelle sde ton script shell?

Reply

Marsh Posté le 11-01-2006 à 14:21:37    

j ai fait quelques essais avec des scripts sh avec la commande tail :
 
tail -n numlinge fichier1 >> fichier2
 
mais le soucis c est que ce n est pas par rapport a un numero mais plus avec un critère si l un d entre vous a ne idée pour récupérer le numéro de ligne ? par rapport a une expression
 
grep -n exp fichier me renvoi  
numlign : exp
 
et je ne voudrai que le numligne  
 
:s

Reply

Marsh Posté le 11-01-2006 à 14:54:15    

grep -n 'exp' fichier1 |cut -d":" -f 1
Ceci ne me renvoi que le numéro de ligne mais comment puis je le mettre dans ma commande tail -n numligne fichier1 >> fichier2

Reply

Marsh Posté le 11-01-2006 à 15:16:53    

regarde peut être du côté de xargs...
sinon, en python :
 
#!/usr/bin/python
import sys
import string
file = sys.argv[1]
exp = sys.argv[2]
lines = open(file).readlines()
c = map(lambda x: string.find(x, exp)!=-1, lines)
for line in lines[c.index(True):]:
    print line[:-1]

Reply

Marsh Posté le 11-01-2006 à 15:26:45    

Merci  paco81 mais là le python :s  
 
je capte pas du tout jamais fait de celà
 
grep -n 'exp' fichier1 |cut -d":" -f 1  
tail -n numligne fichier1 >> fichier2
 
Je me demande si je peut faire passé des paramètres a cette commande tail -n numligne fichier1 >> fichier2  ?
 
style tail -n +$(nbligne) fichier1 >> fichier2
 
et que la commande grep -n 'exp' fichier1 |cut -d":" -f 1 soit mise dans le paramètre $(nbligne)
 
si l'un d entre vous à une idée sur la mise en oeuvre de cela :)
 
merci pour votre aide
 

Reply

Marsh Posté le 11-01-2006 à 15:35:36    

euh bin oui en fait, avec
tail -n `la_commande_qui_donne_le_numero_de_ligne` fichier1 >> fichier2
normalement ça marche...
 
sinon pour mon code, pas besoin de connaitre python !
tu mets mon code dans un fichier dernieres_lignes.py et tu lances
dernieres_lignes.py fichier expression >> fichier2
 
et voilà !

Reply

Marsh Posté le 11-01-2006 à 15:47:52    


tail -n +|grep -n 'exp' fichier1 |cut -d":" -f 1 fichier1 >> fichier2
tail: +: nombre invalide de lignes.
 
Voilà ce qu'il me raconte ...
 
ce n'est qu'une partie de mon script que je viens d'exposé et je voulais savoir si avec ton script en python je peu exécuter le reste de mon script qui est d 'envoyer un fichier par ftp avec commande ftp etc ...
 

Reply

Marsh Posté le 11-01-2006 à 16:03:44    

dufflulu a écrit :

tail -n +|grep -n 'exp' fichier1 |cut -d":" -f 1 fichier1 >> fichier2
tail: +: nombre invalide de lignes.
 
Voilà ce qu'il me raconte ...
 
ce n'est qu'une partie de mon script que je viens d'exposé et je voulais savoir si avec ton script en python je peu exécuter le reste de mon script qui est d 'envoyer un fichier par ftp avec commande ftp etc ...


 
il faut que tu mettes ton grep | ... entre `` (guillements penchés, je sais pas comment ça s'appelle ce caractère)
donc ça fait tail -n +`grep -n 'exp' fichier1 |cut -d":" -f 1` fichier1 >> fichier2
(pas vérifié)
 
sinon oui, tu peux exécuter mon script dans un autre. Comme en bash, tu le lances avec "./script.py arguments..." si tu as donné les droits d'exécution, soit avec "python script.py arguments"

Reply

Marsh Posté le 11-01-2006 à 16:12:13    

Merci beaucoup sa fonctionne ;) merci paco81

Reply

Sujets relatifs:

Leave a Replay

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