我将编写一个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脚本中使用正则表达式?
发布于 2012-12-04 19:34:10
使用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使用多个分隔符>、(和:。使用它,只需打印第二个字段和最后一个字段就变得很简单。
https://stackoverflow.com/questions/13701793
复制相似问题