Jill448
Jill448

Reputation: 1793

How to grep lines from a log file that have the current date?

I need to grep a log file with today's date, but the output is showing for more than today's date.

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

Output:

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  

Upvotes: 7

Views: 98864

Answers (3)

Marc B
Marc B

Reputation: 360632

You're not actually executing 'date', because it's not been surrounded by backticks. The command should be

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

Right now, as written, you are searching for the word date in two different files (+"20%Y-%m-%d", and general.log).

Upvotes: 1

fedorqui
fedorqui

Reputation: 289605

Just use the date output as a pattern in grep:

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

That is, you need to enclose the date sentence to make it be processed. Also, note I used Y instead of your 20%y.


I am looking for a sepcific EmpID in the logs with current date.

Then pipe to another 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 

Upvotes: 18

John Cooper
John Cooper

Reputation: 151

If you need to add space delimited fields in date command use double quotes around $() :

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

Upvotes: 2

Related Questions