[shell ou Perl] Parser un fichier et le modifier

Parser un fichier et le modifier [shell ou Perl] - Shell/Batch - Programmation

Marsh Posté le 13-05-2004 à 10:53:56    

Bonjour,
 
Voila mon probleme :
 
J'ai un fichier LOG et je voudrais envoyer chaque ligne de ce fichier a un programme en C pour qu'il me dise si la ligne est ou n'est pas valide.
Puis je dois rediriger la sortie de ce programme dans le fichier.

Code :
  1. Fichier en entree:
  2. "ligne a analyser"
  3. fichier de sortie :
  4. "ligne a analyser XXX" "sortie du programme"


 
Je ne sais pas si c'et plus facile et/ou rapide du shell script ou du perl, le fichier a analyser fait a peu pres entre 10 et 50 Mo.
 
Merci d'avance


Message édité par zublo le 13-05-2004 à 10:55:30
Reply

Marsh Posté le 13-05-2004 à 10:53:56   

Reply

Marsh Posté le 13-05-2004 à 11:35:50    

Code :
  1. cat fichier | programme


 
ça ne te va pas ?

Reply

Marsh Posté le 13-05-2004 à 13:47:47    

une question, comme ça : ton programme c, il vérifie quoi??
Parce que tu aurais certainement intérêt à utiliser un seul langage : lancer ton prog. c à chaque ligne d'un machin de 10Mo, ça va prendre un temps fou!!
 
A mon sens, tu aurais intérêt :  
 
- soit à faire parcourir le fichier par ton programme c, qui vérifie ligne par ligne,
- soit à écrire tout en Perl.
 
ouala ouala...

Reply

Marsh Posté le 14-05-2004 à 00:52:15    

Citation :

cat fichier | programme


Le cat est absolument inutile : « programme < fichier » fait la même chose mais avec un process et un pipe de moins.
 
Sinon, tu ne peux pas écrire dans le fichier que tu es en train de lire. A part avec perl -i ou sed -i.

Reply

Marsh Posté le 14-05-2004 à 03:28:37    

gfive a écrit :

une question, comme ça : ton programme c, il vérifie quoi??
Parce que tu aurais certainement intérêt à utiliser un seul langage : lancer ton prog. c à chaque ligne d'un machin de 10Mo, ça va prendre un temps fou!!
 
A mon sens, tu aurais intérêt :  
 
- soit à faire parcourir le fichier par ton programme c, qui vérifie ligne par ligne,
- soit à écrire tout en Perl.
 
ouala ouala...


 
le probleme c'est que ce programme en C verifie et cree un hash code dont je n'ai pas l'algo.
Voila pourquoi je pensais a du perl ou du script shell, meme si c'est pas super rapide c'est le seul moyen que j'ai trouve mais je ne vois vraiment comment le realiser.

Reply

Marsh Posté le 14-05-2004 à 08:07:39    

Et ton code C, il est dispo que sous forme d'exécutable?? Y'a pas une version "librairie" de la chose (dll ou .so) histoire de pouvoir appeller directement l'algo depuis du code c???
 
Sinon, Matafan et Blacklord, si le programme C est codé de telle sorte qu'il ne prenne qu'une ligne en argument, ben ça marchera pas, vos solutions.

Reply

Marsh Posté le 14-05-2004 à 08:09:17    

Sinon, beeen
 

Code :
  1. for $line in `cat fichier` ; do
  2.     programme $line >> sortie
  3. done


 
mais c'est moche et pas optimisé, et on peut certainement faire mieux avec un while, ou comme ça, mais je me souviens plus de la sytaxe! :D

Reply

Sujets relatifs:

Leave a Replay

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