2010-06-18 2 views
1

xxxxxxxxmessageyyyyyyymessagexxxxxxxxxxИзвлечение файла журнала

xxxxxxxxmessagezzzzzzzmessagexxxxxxxxxx 

xxxxxxxxmessageaaaaaaamessagexxxxxxxxxx 

xxxxxxxxmessageyyyyyyymessagexxxxxxxxxx 

выше мой лог-файл мне нужно извлечь фразу, которая находится внутри тега сообщения, и мне нужно, чтобы сохранить отдельные сообщения в файле в приведенном выше примере мне нужно сохранить zzzzzzz и aaaaaaa в файл.

Какие команды unix мне нужно использовать.

+0

считают AWK или Perl – 2010-06-18 04:57:52

+0

какая программа создает такой файл журнала? : -S –

+0

Ваш вопрос довольно неясен. Под «тегом сообщения» я предполагаю, что вы имеете в виду 8 x в начале строки и 10 x в конце. Под «отличным» вы понимаете, что сообщение должно записываться только один раз? И вы опускаете yyyyyyy, потому что они дублированы или потому, что они находятся в первой и последней строках? – Beta

ответ

0

AWK:

BEGIN 
{ 
    s=0 
} 

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

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

{ 
    print 
} 

Run с awk -f script.awk <infile> outfile.

0

Существует десяток способов достижения этой цели. Один я тестировал:

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

дали

yyyyyyy 

zzzzzzz 

aaaaaaa 

yyyyyyy 

Кроме того, если вы хотите исключить пустые строки, вы можете добавить что-то вроде:

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