Récupèrer une ligne et les suivantes jusqu'au prochain pattern - Shell/Batch - Programmation
Marsh Posté le 13-07-2011 à 19:35:21
asquel a écrit : Auriez vous une idée ? |
Salut
Il te faut bien comprendre que si tu n'as rien qui te permettrait de différencier une ligne contenant le début de ton log d'une ligne contenant le milieu ou la fin de ton log, on ne pourra rien faire.
Cette base étant posée et admise, on va essayer de voir si on peut trouver une différence. A première vue avec ton exemple, je pencherais pour dire qu'une ligne contenant des pipes sera soit un log complet, soit un début de log. Et une ligne sans pipe sera la suite de la ligne précédente.
A partir de là, on peut poser l'algo suivant: on lit une ligne et on construit, avec la ligne lue, le log à afficher. Celui-ci ne sera affiché qu'une fois complet, c'est à dire quand on est sur une ligne indiquant un nouveau log.
Code :
|
Bon, j'ai tapé ça en live sans tester mais ça me semble pas mal...
Marsh Posté le 11-07-2011 à 19:08:52
Salut à tous,
Je me présente, asquel C'est la première fois que je poste sur ce forum, j'espère que tout se passera bien
J'ai une petite question aux pros du Bash / Shell tout ca quoi ^^
Voilà, j'ai un fichier de trace contenant au début de chaque ligne un identifiant de la session courante (normal jusque là), j'aimerais récupérer toutes les lignes contenant cet identifiant.
Bon jusque là j'aurais eu besoin de personne
Sauf que des fois dans mon fichier de traces, il y a une belle requete SQL écrite, et du coup ca fait un truc du genre :
4e1ad10add2e8|general |2011/07/11 12:31:39-1310380299.7891|debug| |pdo_driver::exec - IUD SQL : INSERT INTO xxxxx (
`xxx` ,
`yyyy` ,
`zzz` ,
`bbb` ,
`ccc` ,
Lorsque je fais un grep / sed ou autre, je n'ai donc que la première ligne qui revient et pas le reste de ma requête sql.
Auriez vous une idée ?
Bien cordialement,
Axel