6

我需要用今天的日期 grep 一个日志文件,但输出显示的时间超过今天的日期。

grep date +"20%y-%m-%d" /path/log/General.log | grep "EmpID#106496" /path/log/Genral.log

输出:

2013-06-19 14:47:05,996 - INFO  EmpID#106496 
2013-06-19 14:47:05,996 - INFO  EmpID#106496 
2013-06-21 00:01:24,915 - INFO  EmpID#106496 
2013-06-21 00:01:24,915 - INFO EmpID#106496  
4

3 回答 3

17

只需使用date输出作为模式grep

$ grep "$(date +"%Y-%m-%d")" file
2013-06-21 00:01:24,915 - INFO   
2013-06-21 00:01:24,915 - INFO

也就是说,您需要将date句子括起来以使其被处理。另外,请注意我使用Y而不是您的20%y.


我正在寻找EmpID具有当前日期的日志中的特定内容。

然后管道到另一个 grep:

$ grep $(date +"%Y-%m-%d") file | grep "EmpID#106496"
2013-06-21 00:01:24,915 - INFO  EmpID#106496 
2013-06-21 00:01:24,915 - INFO EmpID#106496 
于 2013-06-21T15:26:40.280 回答
2

如果您需要在 date 命令中添加空格分隔字段,请在 $() 周围使用双引号:

$ grep "$(date +"%Y-%m-%d %H:%M")" file
2013-06-21 00:01:24,915 - INFO   
2013-06-21 00:01:24,915 - INFO
于 2015-05-22T13:48:47.587 回答
1

您实际上并没有执行“日期”,因为它没有被反引号包围。命令应该是

grep `date +"20%y-%m-%d"` /path/log/General.log
#    ^--                ^--

现在,正如所写,您正在date两个不同的文件(+"20%Y-%m-%d"general.log)中搜索单词。

于 2013-06-21T15:30:09.733 回答