linux - 从Linux中的日志文件中提取模式

标签 linux shell

我有一个日志文件,我想从中仅提取两个重复多次的模式

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][SUN:727862315][SC:New 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: 和 VAL: 以及“:”后面的文本。

最佳答案

使用可以使用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

关于linux - 从Linux中的日志文件中提取模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30834245/

相关文章:

python - impala shell,带大写字母的 shell 命令

java - 根据月份和日期将日志文件放在不同的文件夹中

linux - 如何通过 gradle 脚本在 ubuntu 15 x86_64 上使用 openssl for x86 构建 nginx

linux - 是否可以在线程之间共享一个寄存器?

linux - 在这种情况下如何从 Linux 内核模块导出符号?

Linux:创建别名以列出按进程名称排序的特定进程

Linux 在一行中搜索一个字符串,但替换该行中的另一个字符串

linux - puppet 执行命令问题

php - UTF-8贯穿始终

shell - 使用Shell脚本发送电子邮件并附加查询的输出