2010-06-18 6 views
1

xxxxxxxxmessageyyyyyyymessagexxxxxxxxxxExtrait du fichier journal

xxxxxxxxmessagezzzzzzzmessagexxxxxxxxxx 

xxxxxxxxmessageaaaaaaamessagexxxxxxxxxx 

xxxxxxxxmessageyyyyyyymessagexxxxxxxxxx 

Ce qui précède est mon fichier journal que je dois extraire la phrase qui se trouve dans la balise de message et je dois enregistrer les messages distincts dans un fichier dans l'exemple ci-dessus, je dois Sauvegardez zzzzzzz et aaaaaaa dans un fichier.

Quelles sont les commandes UNIX que je dois utiliser.

+0

considèrent awk ou perl –

+0

Quel programme produit un tel fichier journal? : -S –

+0

Votre question est assez floue. Par "l'étiquette de message" je suppose que vous voulez dire 8 x au début de la ligne et 10 x à la fin. Par "distinct" voulez-vous dire qu'un message ne devrait être enregistré qu'une seule fois? Et omettez-vous les yyyyyyy parce qu'ils sont dupliqués, ou parce qu'ils sont dans la première et la dernière ligne? – Beta

Répondre

0

awk:

BEGIN 
{ 
    s=0 
} 

s==0 && /yyyyy/ 
{ 
    s=1 
    next 
} 

s==1 && /yyyyy/ 
{ 
    exit 
} 

{ 
    print 
} 

Exécuter avec awk -f script.awk <infile> outfile.

0

Il y a une douzaine de façons d'accomplir ceci. Celui que je teste:

(sed 's/xx//g' | sed 's/message//g')<tstlog >processed.log 

cédiez

yyyyyyy 

zzzzzzz 

aaaaaaa 

yyyyyyy 

Aussi, si vous voulez supprimer les lignes vides, vous pouvez ajouter quelque chose comme:

(sed 's/xx//g' | sed 's/message//g' | grep -v ^$) <tstlog>processed.log