2

我将编写一个 shell 脚本来检查我的应用程序生成的日志文件,我只需要从生成的日志中分离出函数名称和有关调用的最少信息。

日志文件格式为 - 0.0003 636488 +440 -> include_once(/var/www/public/const.php) /var/www/public/ajax_shop.php:2

现在,我想从这一行中提取 - 在文件“ajax_shop.php”中的“2”行调用了“include_once”

在这种情况下,我应该如何在 shell 脚本中使用正则表达式?

4

1 回答 1

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 使用多个分隔符 >,( 和 :。使用它,只需打印第二个字段和最后一个字段就变得简单了。

于 2012-12-04T11:34:10.237 回答