2015-06-14 2 views
-2

У меня есть файл журнала, из которого я хочу экстракте только две модели повторять несколько разизвлечения шаблона из файла журнала в Linux

ChannelRequestDailyLog.log.2015-06-05: INFO [Thread-9290 ] (ChannelRequestDailyLog.java:174) - :: [IID: 11] [RNW: TR] [RQRVT: 1433477166808] [RQLGT: 1433477167203] [RQID: 4945] [STV: RC] [RQST: USSD] [RQS : USSD] [RQEXT: 1433477167203] [SUID: TRNP0000185881] [СОЛНЦА: 727862315] [SC: Новое POS] [SM: 727862315] [SNW: TR] [TID: R150605.0606.110013] [TS: 200] [ E: null] [RM: 728128482] [AMT: 100] [SST: 1] [RID: INTID00016] [VAL: 49] [TOP: 0] [COS: 0] [PROMO: 0] [TOPENQ: 0] [PROMOENQ: 0] [COSENQ: 0] [POSTVAL: 0] [PPT: 346] [RTT: 395]

шаблон, который я хочу видеть в TID: and VAL: along with the text after ":".

+0

Итак, что проблема - или вы просто хотите, чтобы мы писали ваш код? – Beat

ответ

0

Использование можно использовать Perl:

my $string = <STDIN>; 
chomp $string; 
@arr = $string =~ /\[((?:TID|VAL):[\w.]*)\]/g; 
$arr_len = scalar @arr; 
for ($i=0; $i<$arr_len; $i=$i+1){ 
    print "$arr[$i]\n"; 
} 

Выход:

TID:R150605.0606.110013 
VAL:49 
0

Использование Perl повторно GEX с Grep:

TID:

grep -oP "(?<=\[)TID:[^:]*(?=\])" filepath 

Выход:

TID:R150605.0606.110013 

VAL:

grep -oP "(?<=\[)VAL:[^:]*(?=\])" filepath 

Выход:

VAL:49 

Если вы хотите получить оба (TID и VAL) сразу, то:

grep -oP "(?<=\[)(TID|VAL):[^:]*(?=\])" filepath 

Примечание: Предполагается, что не будет никакого : после TID: и закрытия ]

Смежные вопросы