我将编写一个shell脚本来浏览我的应用程序生成的日志文件,我需要从生成的日志中仅分离出函数名称和有关调用的最小信息。
日志文件格式为 -
0.0003 636488 +440 -> include_once(/var/www/public/const.php) /var/www/public/ajax_shop.php:2
现在,出于这样的一行,我想提取一下 - “include_once”在文件“ajax_shop.php”的第2行调用
在这种情况下,我应该如何在shell脚本中使用正则表达式?
答案 0 :(得分:3)
使用sed的一种方法:
sed 's/.*-> \([^(]*\).*:\(.*\)/\1 was called at line \2/' logfile
include_once was called at line 2.
\([^(] * \)=>匹配直至遇到右括号。[^(] * =>表示一系列不是'('。
的字符。使用awk:
$ awk -F"[>(:]" '{print $2 " was called at line " $NF}' logfile
include_once was called at line 2.
awk使用多个分隔符>,(和:。使用此功能,只需打印第二个字段和最后一个字段即可。