Delete log file entries based on the Date/Timestamp within log file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Delete log file entries based on the Date/Timestamp within log file
# 1  
Old 08-04-2010
Delete log file entries based on the Date/Timestamp within log file

If a log file is in the following format

28-Jul-10 ::: Log message
28-Jul-10 ::: Log message
29-Jul-10 ::: Log message
30-Jul-10 ::: Log message
31-Jul-10 ::: Log message
31-Jul-10 ::: Log message
1-Aug-10 ::: Log message
1-Aug-10 ::: Log message
2-Aug-10 ::: Log message
2-Aug-10 ::: Log message
4-Aug-10 ::: Log message
4-Aug-10 ::: Log message

How can we delete only the lines which are having date/time entries, which are 2 days earlier from today's date..?

eg:
In this log, i only need to keep till 2 dates from today
2-Aug-10 ::: Log message
2-Aug-10 ::: Log message
4-Aug-10 ::: Log message
4-Aug-10 ::: Log message
and delete the rest of the lines before that.
# 2  
Old 08-04-2010
The code will be more robust, if you use external modules for date manipulation.

Code:
perl -i.~ -MTime::Local -ane'BEGIN {
  @months{
    qw(
        Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
        )
    } = 1 .. 12;
  
  ( $day, $month, $year ) = (localtime)[ 3 .. 5 ];
  
  $my_dt = timelocal( 0, 0, 0, $day, $month, $year ) - 2 * 60 * 60 * 24;
  }
  
  @dt = split /-/, $F[0];
  
  print 
    if timelocal( 0, 0, 0, $dt[0], $months{ $dt[1] } - 1, $dt[2] ) 
      >= 
      $my_dt
  
  ' logfile

# 3  
Old 08-05-2010
Delete log file entries based on the Date/Timestamp within log file

Quote:
Originally Posted by radoulov
The code will be more robust, if you use external modules for date manipulation.

Code:
perl -i.~ -MTime::Local -ane'BEGIN {
  @months{
    qw(
        Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
        )
    } = 1 .. 12;
 
  ( $day, $month, $year ) = (localtime)[ 3 .. 5 ];
 
  $my_dt = timelocal( 0, 0, 0, $day, $month, $year ) - 2 * 60 * 60 * 24;
  }
 
  @dt = split /-/, $F[0];
 
  print 
    if timelocal( 0, 0, 0, $dt[0], $months{ $dt[1] } - 1, $dt[2] ) 
      >= 
      $my_dt
 
  ' logfile



Is there any other simpler ways(using grep, sed.,etc) to do the same in shell script ..?
# 4  
Old 08-05-2010
Yes,
if you have the GNU date program (i.e. if you're on Linux or you can install it yourself).
Otherwise, as far as I know, there is no simpler way.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Filter records from a log file based on timestamp

Dear Experts, I have a log file that contains a timestamp, I would like to filter record from that file based on timestamp. For example refer below file - cat sample.txt Jan 19 20:51:48 mukul-Vostro-14-3468 systemd: pam_unix(systemd-user:session): session opened for user root by (uid=0)... (6 Replies)
Discussion started by: mukulverma2408
6 Replies

2. UNIX for Dummies Questions & Answers

Log file - Delete duplicate line & keep last date

Hello All ! I need your help on this case, I have a csv file with this: ITEM105;ARI FSR;2016-02-01 08:02;243 ITEM101;ARI FSR;2016-02-01 06:02;240 ITEM032;RNO TLE;2016-02-01 11:03;320 ITEM032;RNO TLE;2016-02-02 05:43;320 ITEM032;RNO TLE;2016-02-01 02:03;320 ITEM032;RNO... (2 Replies)
Discussion started by: vadim-bzh
2 Replies

3. Shell Programming and Scripting

Delete log files content older than 30 days and append the lastest date log file date

To delete log files content older than 30 days and append the lastest date log file date in the respective logs I want to write a shell script that deletes all log files content older than 30 days and append the lastest log file date in the respective logs This is my script cd... (2 Replies)
Discussion started by: sreekumarhari
2 Replies

4. Shell Programming and Scripting

delete a row in csv file based on the date

Hi, I have a csv file with old data..i need to have only last 30 days from the current dateof data in the file.The fourth field in the file is a date field.i need to write a script to delete the old data by comparing the the fourth field with the (current date -30).I need to delete the rows in... (2 Replies)
Discussion started by: pals70423
2 Replies

5. Shell Programming and Scripting

Parsing Log File Based on Date & Error

I'm still up trying to figure this out and it is driving me nuts. I have a log file which has a basic format of this... 2010-10-10 22:25:42 Init block 'UA Deployment Date': Dynamic refresh of repository scope variables has failed. The ODBC function has returned an error. The database... (4 Replies)
Discussion started by: k1ko
4 Replies

6. Shell Programming and Scripting

How to search backwards in a log file by timestamp of entries?

Hello. I'm not nearly good enough with awk/perl to create the logfile scraping script that my boss is insisting we need immediately. Here is a brief 3-line excerpt from the access.log file in question (actual URL domain changed to 'aaa.com'): 209.253.130.36 - - "GET... (2 Replies)
Discussion started by: kevinmccallum
2 Replies

7. Shell Programming and Scripting

Delete lines prior to a specific date in a log file.

Hi all. I have a database log file in which log data get appended to it daily. I want to do a automatic maintainence of this log by going through the log and deleting lines belonging to a certain date. How should i do it? Please help. Thanks. Example. To delete all lines prior to Jun... (4 Replies)
Discussion started by: ahSher
4 Replies

8. UNIX for Advanced & Expert Users

Delete File Based On Date

Hi Xpert Out There I have a lots of file in this path : -rw-r----- 1 oracle dba 3954176 Dec 21 2006 1_2008.dbf -rw-r----- 1 oracle dba 887808 Dec 21 2006 1_2009.dbf -rw-r----- 1 oracle dba 143872 Dec 21 2006 1_2010.dbf -rw-r----- 1 oracle dba ... (3 Replies)
Discussion started by: adzuanamir
3 Replies

9. UNIX for Advanced & Expert Users

Copy lines from a log file based on timestamp

how to copy lines from a log file based on timestamp. INFO (RbrProcessFlifoEventSessionEJB.java:processFlight:274) - E_20080521_110754_967: rbrAciInfoObjects listing complete! INFO (RbrPnrProcessEventSessionEJB.java:processFlight:197) - Event Seq: 1647575217; Carrier: UA; Flt#: 0106; Origin:... (1 Reply)
Discussion started by: ranjiadmin
1 Replies

10. Shell Programming and Scripting

Processing a log file based on date/time input and the date/time on the log file

Hi, I'm trying to accomplish the following and would like some suggestions or possible bash script examples that may work I have a directory that has a list of log files that's periodically dumped from a script that is crontab that are rotated 4 generations. There will be a time stamp that is... (4 Replies)
Discussion started by: primp
4 Replies
Login or Register to Ask a Question