![]() |
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| get Message from file within date range | ambharish | UNIX for Dummies Questions & Answers | 2 | 06-29-2007 06:20 PM |
| Report file extraction based on Date range | ganapati | Shell Programming and Scripting | 2 | 07-13-2006 12:26 PM |
| Log File date compare for user defined range | mojo24 | Shell Programming and Scripting | 0 | 05-05-2006 07:39 AM |
| how to extract a range of lines from a file | beilstwh | Shell Programming and Scripting | 5 | 07-09-2004 09:20 AM |
| Need to print file names in a certain date range using ls | Shamwari | UNIX for Dummies Questions & Answers | 2 | 10-08-2001 08:14 PM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
retrieve lines from file which fall under the given date range
Hi, I need to retrieve the lines which fall under the given date range. eg:In a log file,i have the lines which will have the timestamp. the input will be some date range.eg: from date:03/Jan/2008,to date:24/Jul/2008.so now i want to retrieve the lines which have the timestamp between these 2 given date range. log file: ----------- [02/Jan/2008:19:37:00-20401-59-2] Process - data [22/Jan/2008:19:37:00-20401-59-2] Process - data [22/Mar/2008:19:37:00-20401-63-2] Process - data [01/Jul/2008:19:37:00-20401-63-2] Process - data [22/Jul/2008:19:37:00-20401-63-2] Process - data [25/Jul/2008:19:37:00-20401-63-2] Process - data result: Lines 2,3,4 and 5 have to be retrieved. the dates are within the given input date range. |
|
|||||
|
Try with nawk or gawk instead of awk.
Code:
awk -v From="03/Jan/2008" -v To="24/Jul/2008" Code:
function cnvDate(date ,d) {
split(tolower(date), d, "/");
return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}
Code:
BEGIN {
FS = "[:[]";
month["jan"]=1 ; month["feb"]=2 ; month["mar"]=3 ; month["apr"]=4 ;
month["may"]=5 ; month["jun"]=6 ; month["jul"]=7 ; month["aug"]=8 ;
month["sep"]=9 ; month["oct"]=10; month["nov"]=11; month["dec"]=12;
date_from = cnvDate(From);
date_to = cnvDate(To);
}
- Input field separator ':' or '[' - Months table used by cnvDate function - Start and end dates format yyyymmdd Code:
{
date = cnvDate($2)
if (date >= date_from && date <= date_to)
print;
}
- Convert date to format yyyymmdd - Print line if date between start and end dates Jean-Pierre. |
|
||||
|
For the same query,if the input file is like this(below),I tried getting the lines by using the field separator (FS) as blank space.
I used the code like this.. BEGIN{ FS = "[ ]"; But its not working.How I can specify that it has to take the 7th field with the delimiter single space.or is there any other way. Input file: ----------- 2008-01-02 16:21:35,182 INFO1 loginslogging - mk99263 02/Jan/2008 16:21 2008-01-22 16:21:35,182 INFO2 loginslogging - mk99263 22/Jan/2008 16:21 2008-03-22 16:21:35,182 INFO3 loginslogging - mk99263 22/Mar/2008 16:21 2008-07-01 16:21:35,182 INFO4 loginslogging - mk99263 01/Jul/2008 16:21 2008-07-22 16:21:35,182 INFO5 loginslogging - mk99263 22/Jul/2008 16:21 2008-07-25 16:21:35,182 INFO6 loginslogging - mk99263 25/Jul/2008 16:21 |
|
|||||
|
Field separator = space (or tab)
Date field = $7 Code:
awk -v From="03/Jan/2008" -v To="24/Jul/2008" '
function cnvDate(date ,d) {
split(tolower(date), d, "/");
return sprintf("%04.4d%02.2d%02.2d", d[3], month[d[2]], d[1]);
}
BEGIN {
month["jan"]=1 ; month["feb"]=2 ; month["mar"]=3 ; month["apr"]=4 ;
month["may"]=5 ; month["jun"]=6 ; month["jul"]=7 ; month["aug"]=8 ;
month["sep"]=9 ; month["oct"]=10; month["nov"]=11; month["dec"]=12;
date_from = cnvDate(From);
date_to = cnvDate(To);
}
{
date = cnvDate($7)
if (date >= date_from && date <= date_to)
print;
}
' inputfile
|
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|