Bash脚本不太匹配

时间:2010-03-02 17:20:15

标签: bash scripting

我想捕获一个apache日志,然后将结果输出到一个文件。我想将日期/月份与Apache日志匹配到当前/上一个日期,但我似乎做错了。

来自apache日志的示例: 62.173.92.62 - - [02 / Mar / 2010:15:46:58 +0000]“GET / img .......

当前脚本:

cat access_log | grep "\[+%d+/%b" > email.log

我希望与该行的[0/2Mar部分匹配,但是我在email.log中没有得到任何内容(权限可以)。

由于

4 个答案:

答案 0 :(得分:3)

请尝试此操作,您需要调用date并将其输出传递给模式。此外,[需要转义。

grep "\[$(date +%d/%b/%Y)"

答案 1 :(得分:0)

grep不起作用;它不关心当前日期是什么,它使用你盲目传递的正则表达式。使用具有适当格式的date来获取您关注的值,并将其与grep一起使用。

答案 2 :(得分:0)

尝试类似:

day=`date +%d`
mon=`date +%b`
grep "\[$day/$mon/" access_log

答案 3 :(得分:0)

目前

grep "\[$(date +%d/%b/%Y)" file > email.log

以前的

grep "\[$(date +%d/%b/%Y -d 'yesterday')" file > email.log

不需要猫。